python 发送邮件 报554
按照菜鸟教程来发送,各种报554
Error: 无法发送邮件 (554, b'DT:SPM 163 smtp12,EMCowABnNMrmSVtj+d+YGQ--.44845S2 1666927083,please see http://mail.163.com/help/help_spam_16.htm?ip=222.2xx.84.37&hostid=smtp12&time=1666927083')
然后查资料说是给邮箱地址加“<>”包裹起来,确实就可以发送了。
随后,又想给邮箱附带收件人、发件人昵称,又报554。然后各种找资料,发现需要对message的属性进行编码(但不对receiver, sender编码)
测试可行代码如下:
import smtplib from email.mime.text import MIMEText from email.header import Header from email.utils import formataddr, parseaddr def _format_addr(s): name, addr = parseaddr(s) return formataddr((Header(name, 'utf-8').encode(), addr)) # 第三方 SMTP 服务 mail_host = "smtp.163.com" # 设置服务器 mail_user = "176*****00@163.com" # 用户名 mail_pass = "FZ*******APH" # 口令 sender = '二狗<17608008600@163.com>' receivers = ['大狗<55xxxx74@qq.com>', '三喵<10xxxx475@qq.com>'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 message = MIMEText('邮件发送测试...', 'plain', 'utf-8') message['From'] = _format_addr(sender) message['To'] = ','.join(list(map(_format_addr, receivers))) subject = 'SMTP 测试邮件' message['Subject'] = subject try: smtpObj = smtplib.SMTP() smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号 smtpObj.login(mail_user, mail_pass) smtpObj.sendmail(sender, receivers, message.as_string()) smtpObj.quit() print("邮件发送成功") except smtplib.SMTPException as e: print("Error: 无法发送邮件", e)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
2011-10-28 为SELECT结果集添加伪序号列
2011-10-28 SQL 查询效率