通过SMTP发送邮件出现‘NoneType’ object has no attribute ‘encode’错误排查
问题原因及解决方法
错误根源
你的代码中password = os.environ.get("EMAIL_PASSWORD")这一行未获取到有效的密码值,导致password为None类型。当smtplib的login方法尝试对None执行编码(encode)操作时,就会抛出'NoneType' object has no attribute 'encode'的错误。
解决步骤
- 先确认运行环境中是否正确配置了名为
EMAIL_PASSWORD的环境变量,变量值为你的Office365邮箱登录密码(如果开启了两步验证,需使用应用专用密码而非普通登录密码)。 - 测试阶段可临时直接赋值密码(注意:生产环境绝对不要硬编码密码,会造成安全风险):
password = "你的实际邮箱密码/应用专用密码" - 额外优化:
server.sendmail中的发件人和收件人可直接复用之前定义的变量,避免重复写字符串引发拼写错误:server.sendmail(sender_email, email_receiver, em.as_string())
内容的提问来源于stack exchange,提问作者Zyrian
相关产品推荐
相关产品推荐

