You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python smtplib连接自定义域名SMTP服务器失败问题

自定义域名SMTP无法通过smtplib.SMTP识别的问题排查

问题现象

使用Gmail的SMTP主机(smtp.gmail.com)时代码可正常运行:

# login smtp server
# Issue
server = smtplib.SMTP(host="smtp.gmail.com", port=587)
#

print(server)
server.ehlo()
server.starttls()
print(username, email, app_password)
server.login(username, app_password)
print("logged in")
server.sendmail(from_email, to_emails, msg_str)
server.quit()

但替换为自定义域名SMTP主机(smtp.customDomain.io)后无法正常运行:

# login smtp server
# Issue
server = smtplib.SMTP(host="smtp.customDomain.io", port=587)
#

print(server)
server.ehlo()
server.starttls()
print(username, email, app_password)
server.login(username, app_password)
print("logged in")
server.sendmail(from_email, to_emails, msg_str)
server.quit()

排查与解决步骤

  • 验证SMTP服务器的可访问性
    先用nslookup smtp.customDomain.io检查域名是否能解析到正确的IP地址;再用telnet smtp.customDomain.io 587测试端口是否开放,若无法连接,说明服务器本身不可达或端口被屏蔽。

  • 调整SMTP连接方式
    部分自定义域名SMTP默认使用SSL加密(端口465)而非STARTTLS,可尝试改用SMTP_SSL连接:

    server = smtplib.SMTP_SSL(host="smtp.customDomain.io", port=465)
    # 无需再调用starttls()
    server.ehlo()
    
  • 确认登录凭据的正确性
    自定义域名邮箱通常要求使用完整邮箱地址作为登录用户名,而非Gmail那样的前缀;同时确认是否开启了SMTP/POP3服务,以及授权密码(若使用应用专用密码)是否匹配当前域名邮箱的配置。

  • 启用调试模式获取详细错误
    在代码中添加调试日志,便于定位具体失败原因:

    server = smtplib.SMTP(host="smtp.customDomain.io", port=587)
    server.set_debuglevel(1)  # 开启调试模式
    server.ehlo()
    server.starttls()
    
  • 捕获异常明确错误类型
    用try-except块捕获SMTP相关异常,精准定位问题:

    import smtplib
    
    try:
        server = smtplib.SMTP(host="smtp.customDomain.io", port=587)
        server.set_debuglevel(1)
        server.ehlo()
        server.starttls()
        server.login(username, app_password)
        server.sendmail(from_email, to_emails, msg_str)
        print("发送成功")
    except smtplib.SMTPConnectError:
        print("无法连接到SMTP服务器")
    except smtplib.SMTPAuthenticationError:
        print("登录凭据错误")
    except Exception as e:
        print(f"发生未知错误: {str(e)}")
    finally:
        server.quit()
    
  • 检查网络环境限制
    确认本地防火墙、VPN或ISP是否屏蔽了587/465端口,可尝试切换网络环境测试。

内容的提问来源于stack exchange,提问作者Peter Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 19:17:35