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

使用smtplib自动发送Gmail邮件失败(账号密码正确)问题排查

Gmail SMTP 465端口发信失败(账号密码正确场景)排查方案

报错界面截图1
报错界面截图2

排除账号密码拼写错误的前提,按出现概率从高到低排查以下问题即可:

  • 未使用应用专用密码做SMTP认证
    Gmail 2022年就下线了「允许低安全性应用访问」的开关,普通账号密码无法用于第三方SMTP调用。如果账号没开两步验证,先去Google账号安全中心开启两步验证,之后在安全页底部找到「应用专用密码」入口,选择应用类型为邮件、设备为当前运行脚本的设备,生成16位专用密码,替换代码里原来的账号密码即可。如果不想用应用专用密码,需要走OAuth2.0授权流程,个人脚本场景用应用专用密码是成本最低的方案。
  • 出口IP被Gmail反垃圾策略拦截
    如果你使用的网络出口是被标记为垃圾邮件源的代理节点、国内机房IP,或者短时间发信量过高触发风控,Gmail会直接断开SMTP连接,不会返回明确的密码错误提示。可以先切换到常用的海外家庭宽带IP、或者官方客户端能正常登录发信的网络环境重试。
  • 465端口连接代码写法错误
    465端口是SMTP over SSL协议端口,不能初始化普通SMTP实例后再调用starttls(),正确的最小参考代码如下:
    import smtplib
    from email.mime.text import MIMEText
    
    sender_addr = "你的Gmail地址@gmail.com"
    sender_pwd = "16位应用专用密码"
    receiver_addr = "收信人邮箱地址"
    
    mail_content = MIMEText("邮件正文内容", "plain", "utf-8")
    mail_content["From"] = sender_addr
    mail_content["To"] = receiver_addr
    mail_content["Subject"] = "邮件标题"
    
    # 465端口必须直接初始化SMTP_SSL实例
    with smtplib.SMTP_SSL("smtp.gmail.com", 465, timeout=10) as smtp_conn:
        smtp_conn.login(sender_addr, sender_pwd)
        smtp_conn.sendmail(sender_addr, receiver_addr, mail_content.as_string())
    
  • 本地网络拦截了465端口出站请求
    本地执行telnet smtp.gmail.com 465测试连通性,如果连接超时,排查本地防火墙、路由器规则、云服务器安全组是否放通465端口的出站访问权限即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:48:17