使用Flask-Mail发送邮件时遇[Errno -2] Name or service not known错误求助
解决Flask-Mail发送邮件出现「Name or service not known」错误的方法
这个错误是SMTP服务器地址无法被DNS解析导致的,按照以下步骤排查解决:
替换占位符为真实SMTP服务器地址
你当前app.config["MAIL_SERVER"] = "smtp....."是占位符,必须替换成和Thunderbird配置里完全一致的SMTP服务器地址(比如你的邮箱服务商提供的smtp.xxx.com格式地址)。验证服务器地址的可访问性
在运行Flask应用的环境中,用命令测试地址是否能正常解析:nslookup 你的SMTP服务器地址 # 或者用ping测试连通性 ping 你的SMTP服务器地址如果返回「无法找到主机」类结果,说明地址填写错误,重新核对Thunderbird里的配置信息。
确认端口与加密配置匹配
确保Flask的端口和加密设置和Thunderbird完全一致:- 若Thunderbird中SMTP端口为587、连接安全选「STARTTLS」,你当前Flask的
MAIL_PORT=587、MAIL_USE_TLS=True、MAIL_USE_SSL=False是正确的; - 若Thunderbird用465端口+SSL加密,需要修改为
MAIL_PORT=465、MAIL_USE_TLS=False、MAIL_USE_SSL=True。
- 若Thunderbird中SMTP端口为587、连接安全选「STARTTLS」,你当前Flask的
排查网络环境限制
确认运行Flask应用的机器没有被防火墙、代理或网络策略阻挡访问该SMTP服务器(比如服务器安全组是否开放了对应端口)。
内容的提问来源于stack exchange,提问作者Tlaloc-ES
相关产品推荐
相关产品推荐

