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

使用Python smtplib发送邮件时出现550错误的问题咨询

550 5.7.0 Authentication rejected 问题排查方案

首先澄清一个常见的认知偏差:SMTP返回的550 5.7.0 Authentication rejected错误绝大多数场景下指向发件方身份校验失败,而非收件人地址被拒,你可以按照以下步骤逐一排查问题:

1. 校验登录凭证与服务配置

  • 确认username、password参数合规:大部分公共邮箱服务(QQ邮箱、163邮箱、Gmail等)不支持直接使用账号登录密码作为SMTP校验凭证,需要到邮箱安全设置页面单独生成应用专用密码,将生成的密码填入代码对应位置
  • 确认SMTP服务地址与端口匹配:不同邮箱服务商的SMTP地址、端口有固定规范,例如Gmail的SMTP地址为smtp.gmail.com、TLS端口为587,若使用自建SMTP服务,确认你填写的地址、端口和运维提供的配置一致
  • 确认发件邮箱已开启SMTP权限:多数邮箱默认关闭SMTP服务,需要手动在邮箱设置页开启该功能;若为自建服务,确认当前运行代码的IP地址在服务端的访问白名单内

2. 修复邮件内容格式问题

你当前代码中直接传递纯文本字符串作为邮件内容,不符合SMTP协议要求的标准邮件格式,缺少发件人、收件人、主题等必要头字段,部分服务端会直接拒绝这类格式不合法的发送请求,可调整为如下写法:

import smtplib
import ssl
from email.mime.text import MIMEText

if __name__ == "__main__":
    smtp_server = "smtp.server.ip.addr"
    port = 111
    password = "你的应用专用密码"
    username = "my@email.com"
    # 替换为标准SSL上下文,跳过证书校验的写法容易被安全级别高的服务端拦截
    context = ssl.create_default_context()
    receiver_email = "my_recipient@gmail.com"
    # 构造符合RFC标准的邮件
    msg = MIMEText("Hi", "plain", "utf-8")
    msg["From"] = username
    msg["To"] = receiver_email
    msg["Subject"] = "测试邮件"

    try:
        server = smtplib.SMTP(smtp_server, port)
        server.starttls(context=context)
        server.login(username, password)
        # 传入格式化后的邮件字符串
        server.sendmail(username, receiver_email, msg.as_string())
        server.quit()
    except Exception as e:
        print(e)

3. 特殊场景排查

如果以上步骤都没有解决问题,可以尝试直接使用邮件客户端(如Outlook、Foxmail)配置相同的SMTP参数发送测试邮件,确认是代码层面的问题还是账号/服务层面的问题:如果客户端也无法发送,直接排查账号权限和服务配置即可;如果客户端可以正常发送,再检查代码的SSL版本、协议握手逻辑是否和服务端要求匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:36:01