失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python smtp发送邮件 收件人和发件人不显示问题

python smtp发送邮件 收件人和发件人不显示问题

时间:2023-01-27 01:46:30

相关推荐

python smtp发送邮件 收件人和发件人不显示问题

使用smtp发送邮件时,在已发送邮件列表中,收件人信息显示“收件人未填写”,在邮件详情中也没有直接显示收件人信息,发件人也为空:

发送方显示:

收件方显示:

解决办法:

引入email.utils模块 中的parseaddr函数和formataddr函数,用来在发送Email的时候,“美化”地址中的姓名部分。

参考demo源码:

# 粥粥yan# 开发时间:/7/22 10:53# coding:utf-8import smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMEText# 美化”地址中的姓名部分from email.utils import parseaddr, formataddrmsg_from = 'xxx@'# 授权码pwd = 'xxxxxxxx'# 接收方邮箱to = ['xxxx@', 'xxxxx@']# 发送邮件主题subject = 'Python email tests2 V1'# 发送邮件# MIMEMultipart 类可以放任何内容msg = MIMEMultipart()content = 'hello word!'# 把内容加进去msg.attach(MIMEText(content, 'plain', 'utf-8'))# 设置邮件主题msg['Subject'] = subject# 自定义发件人和收件人信息# (可以在收到邮件的时候看到发件人和收件人信息),没设置该部分在收邮件时告知是未知发件人def _format_addr(s):addr = parseaddr(s)return formataddr(addr)# 自定义发件人名称msg['From'] = _format_addr(u'tester <%s>' % msg_from)# 自定义收件人(不定义会显示'收件人未填写')for item in to:msg['to'] = _format_addr(item)# 开始发送# 通过SSL方式发送,服务器地址和端口smtObj = smtplib.SMTP_SSL("", 465)# 登录邮箱smtObj.login(msg_from, pwd)# 开始发送smtObj.sendmail(msg_from, to, msg.as_string())print("邮件发送成功")# 关闭邮件服务器的连接smtObj.quit()

发送方显示结果:

收件方显示:

Tips:其实大可不必如上去解决,直接用yagmail 这个第三方库发送,就不需要自己额外去美化发件人和收件人的信息了。

如果觉得《python smtp发送邮件 收件人和发件人不显示问题》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。