文章背景:自学Python编程快速上手
中关于发送电子邮件的章节。本文讲述如何通过Python,使用QQ邮箱发送电子邮件。
from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr, formataddr
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
from_addr = 'my_email_address@qq.com' # 发件人
to_addr = 'recipient@example.com' # 收件人
message = MIMEText('Happy new year!', 'plain', 'utf-8') # 正文
message['From'] = _format_addr('Sam <%s>' % from_addr) # 发件人
message['To'] = _format_addr('Python lover <%s>' % to_addr) # 收件人
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8') #主题
smtpObj.sendmail(from_addr, [to_addr], message.as_string())
From
、To
和Subject
添加到MIMEText
中,才是一封完整的邮件。_format_addr()
用来格式化一个邮件地址;如果包含中文,需要通过Header
对象进行编码。,
分隔即可。sendmail()
方法就是发邮件,由于可以一次发给多个人,所以传入一个list
,邮件正文是一个str
,as_string()
把MIMEText
对象变成str
。smtpObj.quit()
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr, formataddr
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
# 1. 连接到SMTP服务器
smtpObj = smtplib.SMTP('smtp.qq.com',587)
# 2. 发送SMTP的“HELLO”消息
smtpObj.ehlo()
# 3. 开始TLS加密
smtpObj.starttls()
# 4. 登陆到SMTP服务器
smtpObj.login('my_email_address@qq.com','MY_SECRET_PASSWORD')
# 5. 发送电子邮件
from_addr = 'my_email_address@qq.com' # 发件人
to_addr = 'recipient@example.com' # 收件人
message = MIMEText('Happy new year!', 'plain', 'utf-8') # 正文
message['From'] = _format_addr('Sam <%s>' % from_addr) # 发件人
message['To'] = _format_addr('Python lover <%s>' % to_addr) # 收件人
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8') #主题
smtpObj.sendmail(from_addr, [to_addr], message.as_string())
# 6. 从服务器断开
smtpObj.quit()
print("Done!")
运行代码后,打开收件箱,效果如下:
参考资料:
[1] Python编程快速上手—让繁琐工作自动化(https://ddz.red/AFTmO)
[2] QQ邮箱的POP3与SMTP服务器(https://service.mail.qq.com/cgi-bin/help?subtype=1&no=167&id=28)
[3] 授权码(https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256%27)
[4] SMTP发送邮件(https://www.liaoxuefeng.com/wiki/1016959663602400/1017790702398272)
[5] Python SMTP发送邮件(https://www.runoob.com/python/python-email.html)
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有