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

Python代码发送邮件遇[Errno 99]错误,求可行解决步骤

解决Python发送邮件时[Errno 99] Cannot assign requested address错误的具体步骤

错误原因

该错误是因为本地机器未运行SMTP服务器,或者localhost的SMTP服务未正常监听端口,导致无法建立连接。

解决方案步骤

方案一:使用第三方邮箱SMTP服务(以Gmail为例)

这是最常用的解决方式,无需搭建本地服务:

  • 步骤1:确认邮箱SMTP配置
    Gmail的SMTP服务器地址为smtp.gmail.com,推荐使用587端口(TLS加密)。若开启了两步验证,需生成应用专用密码;未开启则需在Gmail后台允许“不太安全的应用访问”。

  • 步骤2:修改代码配置SMTP连接
    替换原代码中的本地SMTP连接逻辑,添加认证和加密步骤:

    import smtplib
    from email.message import EmailMessage
    
    msg = EmailMessage()
    msg.set_content("Hello")
    
    msg['Subject'] = 'test mail'
    msg['From'] = 'personnal.mail@gmail.com'
    msg['To'] = 'personnal.mail@gmail.com'
    
    # 连接Gmail SMTP服务并发送
    with smtplib.SMTP('smtp.gmail.com', 587) as smtp_server:
        smtp_server.starttls()  # 启用TLS加密
        smtp_server.login('personnal.mail@gmail.com', '你的邮箱密码/应用专用密码')
        smtp_server.send_message(msg)
    
  • 步骤3:测试运行
    执行修改后的代码,检查邮箱收件箱是否收到测试邮件。若报错,优先排查密码正确性、SMTP权限是否开启。

方案二:搭建本地SMTP服务器(仅用于测试)

适合不需要真正发送邮件,仅验证代码逻辑的场景:

  • 步骤1:启动本地调试SMTP服务器
    在终端执行以下Python自带的命令:

    python -m smtpd -n -c DebuggingServer localhost:25
    

    该命令会启动一个调试服务器,不会真正投递邮件,只会在控制台打印邮件内容。

  • 步骤2:运行原代码测试
    保持你最初的代码不变,在本地服务器启动后执行代码,即可正常连接并看到邮件内容输出在终端。

内容的提问来源于stack exchange,提问作者Lucas Morin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:27:52