smtplib.SMTPAuthenticationError 534错误:环境变量配置失效硬编码正常
排查解决步骤
- 优先校验密码对应的环境变量:你目前只验证了邮箱变量
EMAIL_USER的取值,90%以上的同类问题都是密码环境变量取值异常导致。不要仅做布尔相等对比,执行print(repr(os.environ.get('EMAIL_PASSWORD')))查看值的原始格式,确认是否存在多余的空格、引号、换行符或转义字符。 - 确认运行环境是否加载了
.bashrc配置:.bashrc仅对交互式非登录shell生效,如果你通过crontab、系统服务、容器、IDE直接运行程序,不会自动加载该文件的配置。可以在程序初始化阶段打印全量环境变量print(dict(os.environ)),确认你配置的邮箱、密码变量确实存在于当前运行环境中。 - 检查变量调用的额外处理逻辑:确认你拿到
os.environ.get('EMAIL_USER')和密码变量的返回值后,没有执行多余的字符串处理(比如自动拼接域名、替换特殊字符、strip逻辑漏判等),硬编码时没有经过这层处理所以正常,环境变量取值后被修改就会触发认证失败。 - 排查环境变量覆盖问题:如果你使用虚拟环境、Docker容器运行程序,检查虚拟环境激活脚本、Dockerfile、docker-compose配置中是否有覆盖
EMAIL_USER/EMAIL_PASSWORD变量的逻辑,优先级更高的配置会覆盖.bashrc中的设置。
补充验证:你可以临时在配置文件中把
os.environ.get('EMAIL_USER')和os.environ.get('EMAIL_PASSWORD')的返回值直接硬编码测试,如果这时候也报错,就能确定是环境变量取值本身和你预期的值不一致导致的问题。
内容的提问来源于stack exchange,提问作者user8211051
相关产品推荐
相关产品推荐

