Python发送邮件使用的协议是STMP,Python内置对STMP的支持,可以发送纯文本邮件、HTML邮件及带附件的邮件。Python对STMP支持有两个模块email和smtplib,email负责构造邮件,stmplib负责发送邮件。
1、申请一个163邮箱
地址:https://mail.163.com/register/index.htm?from=163mail&utm_source=163mail,完成邮箱的申请,然后开启SMTP功能。
,
开启服务后会给一个授权码,需要保存好,后面需要用到。
2、邮件的发送
完成第1步之后,选构造一个纯文本邮件并发送给指定邮箱:
from email.mime.text import MIMEText from email.header import Header from email.utils import parseaddr,formataddr import smtplib def _format_addr(s): name,addr = parseaddr(s) return formataddr((Header(name,'utf-8').encode(),addr)) '发件人地址,第一步申请的邮箱地址' from_addr = 'email@163.com' '邮箱密码(第一步开通SMTP服务后给的授权码)' pwd = 'passwoerd' '收件人地址' to_addr = '41234444@qq.com' '163邮箱服务器地址' smtp_server = 'smtp.163.com' '设置邮件信息' msg = MIMEText('Python发送纯文本邮件Demo','plain','utf-8') ''' 构造MIMEText需要三个参数:邮件正文、MIME的subtype,plain表示纯文本、编码格式 ''' msg['From'] = _format_addr('测试邮件<%s>'%from_addr) msg['To'] = _format_addr('收件人<%s>'%to_addr) msg['Subject'] = Header('测试','utf-8').encode() '发送邮件' server = smtplib.SMTP(smtp_server,25)#25为端口号 server.login(from_addr,pwd) server.sendmail(from_addr,[to_addr],msg.as_string()) server.quit()
结果:
发送html邮件只需要在构造文本的时候,将plain参数改为html即可:
'设置邮件信息' msg = MIMEText('<a href="http://www.baidu.com" target="_blank">点一下去百度</a>','html','utf-8')
结果: