赞
踩
-
- import smtplib
- from email.mime.text import MIMEText
- from email.header import Header
- from email.utils import formataddr
-
- def send_email():
- # 设置要登录的邮箱
- smtp_obj = smtplib.SMTP('smtp.qq.com')
- # 登录邮箱
- smtp_obj.login('1120619200@qq.com','bizzgnpiwvhvggfe')
- # 编辑内容
- mail_text = 'This is Email~ 您要的邮件来啦~~'
- # plain 原生文本模式
- msg_body = MIMEText(mail_text,'plain','utf-8')
- # 设置从哪发送的
- msg_body['From'] = formataddr((str(Header('百战python学院', 'utf-8')), '1120619200@qq.com'))
- msg_body['Subject'] = Header('测试Python自动邮件','utf-8')
- # 发送邮件
- smtp_obj.sendmail('1120619200@qq.com','18574651783@163.com',msg_body.as_string())
-
-
- if __name__ =='__main__':
- send_email()

当你设置邮件头部时,应确保它符合邮件格式标准。使用 Email.header.Header 对象时的编码问题可能导致邮件服务提供商(QQ邮箱)无法识别它们。如果只是简单地使用文本和邮件地址,通常是没问题的。
msg_body['From'] = Header('python <1120619200@qq.com>') 这种格式符合标准格式,因为它将名字和邮箱地址以常见的格式组合起来,不包括非ASCII字符,所以没有涉及到编码转换。
但是当你尝试将非ASCII字符(如中文)加入邮件头部时,就需要小心处理编码。你使用了 Header('百战python学院 <1120619200@qq.com>', 'utf-8'),尽管你指定了UTF-8编码,但是可能在电子邮件客户端或者Python的 smtplib 和 email 模块在处理这种复杂的编码时存在兼容性问题。
当你遇到这样的问题时,可以使用以下方式来正确设置含有非ASCII字符头部:
from email.utils import formataddr
msg_body['From'] = formataddr(('百战python学院', '1120619200@qq.com'))
这样 formataddr 可以负责处理字符的编码,让头部信息能够符合邮件服务商的要求。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。