如何使用Python的MIME处理包发送邮件?header_max_count报错如何解决?
报错原因
你触发报错的核心原因是EmailMessage类实例化方式错误:EmailMessage构造函数不支持直接传入邮件正文作为位置参数,你传入的字符串"HI"会导致实例初始化异常,后续给Subject等头部字段赋值时就会触发'str' object has no attribute 'header_max_count'报错。
修复方案
- 调整
EmailMessage实例化逻辑,先创建空实例,再调用set_content()方法设置邮件正文 - 发件人、收件人地址需要用引号包裹为字符串类型,避免触发语法错误
- 如果本地未搭建SMTP服务,需要替换为对应邮箱服务商的SMTP地址、端口,完成身份验证后再发送邮件
修正后的完整代码
# 导入发送邮件所需的smtplib库 import smtplib # 导入email模块 from email.message import EmailMessage # 创建空的EmailMessage实例 msg = EmailMessage() # 设置邮件正文 msg.set_content("HI") # 配置邮件头部 msg['Subject'] = "SubjectLine" # 发件人地址需要加引号转为字符串 msg['From'] = "aaaaa@gmail.com" # 收件人地址需要加引号转为字符串 msg['To'] = "aaaaa@yahoo.com" # 发送邮件(如果使用第三方邮箱SMTP服务,需要替换为对应服务商的地址和端口,加身份验证) # 示例:s = smtplib.SMTP_SSL('smtp.xxx.com', 465) # s.login("你的邮箱地址", "你的授权码") s = smtplib.SMTP('localhost') s.send_message(msg) s.quit()
内容的提问来源于stack exchange,提问作者Bojan Milinic
相关产品推荐
相关产品推荐

