SMTP介绍
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。
Python对SMTP支持有 smtplib
和 email
两个模块,email
负责构造邮件,smtplib
负责发送邮件。
Python 的 email 模块里包含了许多实用的邮件格式设置函数,可以用来创建邮件“包裹”。使用的 MIMEText 对象,为底层的 MIME(Multipurpose Internet MailExtensions,多用途互联网邮件扩展类型)协议传输创建了一封空邮件,最后通过高层的SMTP 协议发送出去。 MIMEText 对象 msg 包括收发邮箱地址、邮件正文和主题,Python 通过它就可以创建一封格式正确的邮件。smtplib 模块用来设置服务器连接的相关信息。
发送QQ邮件
开启QQ邮箱SMTP服务,获得授权码
通过QQ邮箱来发送邮件,需要开启QQ邮箱的设置-账户里的SMTP服务,并且点击生成授权码
通过发送短信验证来获得授权码,有了授权码后就可以在代码里添加了。
QQ邮件服务器配置
根据此配置来设置smtplib.SMTP_SSL()函数的参数。
具体代码
import smtplib
from email.mime.text import MIMEText
msg_from='xxxxxxxxx@qq.com' #发送方邮箱
passwd='abcdefghigklmnop' #填入发送方邮箱的授权码
msg_to='xxxxx@qq.com' #收件人邮箱
subject="python邮件测试" #主题
content="这是我使用python smtplib及email模块发送的邮件" #正文
msg = MIMEText(content)
msg['Subject'] = subject
msg['From'] = msg_from
msg['To'] = msg_to
try:
s = smtplib.SMTP_SSL("smtp.qq.com",465) #邮件服务器及端口号
s.login(msg_from, passwd) #登录SMTP服务器
s.sendmail(msg_from, msg_to, msg.as_string())#发邮件 as_string()把MIMEText对象变成str
print ("发送成功")
except s.SMTPException:
print ("发送失败")
finally:
s.quit()
发送效果
发送HTML邮件以及带附件的邮件