You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Python从GoDaddy注册的邮件服务器发件时遭遇SMTPServerDisconnected错误的求助

使用Python从GoDaddy注册的邮件服务器发件时遭遇SMTPServerDisconnected错误的求助

Hey,我之前帮朋友处理过几乎一模一样的GoDaddy SMTP发件问题,这个SMTPServerDisconnected错误通常是连接配置或者GoDaddy账户侧的设置没到位导致的,咱们一步步来排查解决:

先调整代码里的SMTP连接配置

GoDaddy的SMTP服务器有时候对连接方式比较挑剔,你可以试试这两个修改方向:

  1. 换用STARTTLS的587端口
    虽然465端口的SMTP_SSL是官方推荐的,但有些环境下587端口的STARTTLS模式反而更稳定,修改代码这部分:
# 替换原有的SMTP_SSL初始化代码
mailserver = smtplib.SMTP('smtpout.secureserver.net', 587)
mailserver.ehlo()
mailserver.starttls()  # 开启TLS加密通道
mailserver.ehlo()  # 开启加密后需要再次发送EHLO指令
mailserver.login('info@mydomain.com', 'abc123')
  1. 移除SMTP_SSL后的EHLO指令
    用SMTP_SSL建立加密连接后,有些服务器不需要额外的EHLO请求,你可以试试删掉mailserver.ehlo()那一行,直接执行login:
mailserver = smtplib.SMTP_SSL('smtpout.secureserver.net', 465)
# 去掉这一行:mailserver.ehlo()
mailserver.login('info@mydomain.com', 'abc123')

检查GoDaddy账户的关键设置

这部分很容易被忽略,也是很多人踩坑的地方:

  • 应用专用密码(如果开了两步验证):如果你的GoDaddy账户开启了两步验证,直接用邮箱原密码登录SMTP会失败,必须在GoDaddy账户里生成一个「应用专用密码」,用这个密码代替代码里的abc123
  • IP白名单设置:GoDaddy的邮件服务器会自动拦截非信任IP的连接请求,你可以登录GoDaddy账户,找到邮件管理的「发件限制」或「IP白名单」选项,把当前运行代码的设备的公网IP加进去。
  • 确认邮箱状态:检查这个info@mydomain.com邮箱是否被GoDaddy限制发件,比如有没有触发垃圾邮件预警,或者账户是否处于正常状态。

其他排查小技巧

  • 添加超时设置:在初始化SMTP连接时加上超时参数,避免因为网络延迟导致连接被主动关闭:
mailserver = smtplib.SMTP_SSL('smtpout.secureserver.net', 465, timeout=30)
  • 用telnet测试基础连接:在终端里执行telnet smtpout.secureserver.net 465,如果连这个命令都无法建立连接,说明是网络或者GoDaddy的防火墙拦截了你的请求,这时候可能需要联系GoDaddy的客服确认。

内容来源于stack exchange

火山引擎 最新活动