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

使用Python smtplib无法发送Yahoo邮件?求解决方案

解决Yahoo邮箱通过smtplib发送邮件时的连接断开问题

问题现象

使用Python的smtplib库发送邮件,Gmail配置可正常运行,但切换为Yahoo邮箱后,执行到login步骤时抛出smtplib.SMTPServerDisconnected: Connection unexpectedly closed错误。

核心原因

Yahoo邮箱默认禁止使用普通账号密码登录第三方邮件脚本/客户端,必须使用应用专用密码,且前提是已开启账号的两步验证。

解决步骤

1. 开启Yahoo账号的两步验证

  • 登录Yahoo账号的安全设置页面
  • 找到「两步验证」选项并开启,按指引完成验证流程

2. 创建应用专用密码

  • 在安全设置页面找到「应用专用密码」选项
  • 选择对应应用类型(如「邮件」或「其他应用」),生成16位的应用专用密码
  • 将该密码替换.env文件中的LOGIN_PW值

3. 代码优化(可选但推荐)

部分SMTP服务器在starttls加密后需要重新发送EHLO指令,避免连接异常;同时添加异常处理便于排查问题。

修改后的完整代码

from email.mime.text import MIMEText
import smtplib
from dotenv import load_dotenv
import os
import sys

if __name__ == '__main__':
    path = os.path.abspath(os.path.dirname(sys.argv[0])) 
    fn = os.path.join(path, ".env")
    load_dotenv(fn) 
    LOGIN_EMAIL = os.environ.get("LOGIN_EMAIL")
    LOGIN_PW = os.environ.get("LOGIN_PW")
    SMTP_SERVER = os.environ.get("SMTP_SERVER")
    SMTP_PORT = int(os.environ.get("SMTP_PORT"))
    MAIL_TO = os.environ.get("MAIL_TO")

    headlineTxt = "The Headline"
    msgTxt = "This is some Text"
    
    try:
        # 初始化SMTP连接
        s = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
        print(s.ehlo())  # 初始握手
        print(s.starttls())  # 启用TLS加密
        print(s.ehlo())  # 加密后重新握手,适配部分服务器
        
        # 使用应用专用密码登录
        print(s.login(LOGIN_EMAIL, LOGIN_PW))
        
        # 构造邮件
        msg = MIMEText(msgTxt)
        msg['Subject'] = headlineTxt
        msg['From'] = LOGIN_EMAIL
        msg['To'] = MAIL_TO  # 补充To头,符合邮件规范
        
        # 发送邮件
        s.sendmail(LOGIN_EMAIL, MAIL_TO, msg.as_string())
        print("邮件发送成功")
    except Exception as e:
        print(f"发送失败: {str(e)}")
    finally:
        # 确保连接关闭
        if 's' in locals():
            s.quit()

正确的Yahoo配置(.env文件)

LOGIN_EMAIL = your_yahoo_email@yahoo.com
LOGIN_PW = 你的应用专用密码
SMTP_SERVER = smtp.mail.yahoo.com
SMTP_PORT = 587
MAIL_TO = recipient_email@example.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:37:03