Python使用SMTP发信部署到PythonAnywhere后报错如何排查?
报错修复方案
1. 修复FileNotFoundError路径错误
你本地运行使用的是Windows系统,路径分隔符为反斜杠\,而PythonAnywhere运行环境为Linux系统,路径分隔符为正斜杠/,硬编码的letter_templates\\letter_3.txt路径在Linux环境下无法被识别。
修复方案:
- 优先使用Python内置跨平台路径处理工具,避免硬编码分隔符:
方法一:使用os.path模块
方法二:使用import os # 自动适配当前系统的路径分隔符 file_path = os.path.join("letter_templates", "letter_3.txt")pathlib模块(Python 3.4+支持)from pathlib import Path file_path = Path("letter_templates") / "letter_3.txt" - 确认你已将
letter_templates文件夹及内部所有文件完整上传到PythonAnywhere中main.py所在的同级目录。
2. 修复SMTP网络不可达错误
PythonAnywhere免费账户的出站网络连接有严格限制,仅允许访问平台官方白名单内的站点,默认禁止直接连接外部SMTP服务器,所以会触发网络不可达报错。
修复方案:
- 方案一:升级为PythonAnywhere付费账户,解除出站网络连接限制,即可正常连接Outlook SMTP服务器发信。
- 方案二:更换发信方案,使用平台白名单内的邮件服务API发信,比如SendGrid的公开API在白名单范围内,你可以将SMTP发信逻辑替换为调用SendGrid API实现发信需求。
- 若你已是付费账户,请确认账户出站权限已正常开启,也可联系平台客服排查网络规则限制。
内容的提问来源于stack exchange,提问作者Raja Khan
相关产品推荐
相关产品推荐

