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

使用Python调用Cpanel域名邮箱发信报smtplib.SMTPDataError 550错误

问题原因

550报错是cpanel的SMTP反伪造机制触发的,你构造的邮件内容缺少标准的From发件人头字段,仅在smtp.sendmail()参数中传入发件人地址不会被自动写入邮件头,服务器解析邮件头时识别不到匹配的已验证发件人地址,因此判定为伪造邮件。同时你使用的587端口默认要求开启TLS加密,你注释了smtp.starttls()也可能导致认证不完整。

修复方案
  • 取消smtp.starttls()行的注释,开启TLS加密传输
  • 在构造的msg中补充From和To头字段,和你传入sendmail的发件人、收件人地址保持完全一致
修复后代码
import smtplib
import config # 确保你已经正确导入config模块

with smtplib.SMTP('mail.rottengrapes.com',587) as smtp:
    smtp.ehlo()
    smtp.starttls() # 取消注释,开启TLS加密
    smtp.ehlo()
    smtp.login("formkitty@rottengrapes.com",config.PASSWORD)
    subject = 'Testing email'
    body = 'Getting data via email'
    # 补充From和To头字段
    msg = f'From: formkitty@rottengrapes.com\nTo: mewow@gmail.com\nSubject: {subject}\n\n\n\n{body}'
    smtp.sendmail("formkitty@rottengrapes.com",'mewow@gmail.com', msg.encode('utf-8')) # 指定编码避免乱码
    print('邮件发送成功')
验证排查项

如果修改后仍报错,可以检查以下配置:

  • 确认cpanel邮箱账号的SMTP权限已经开启,没有被主机商限制外发
  • 确认域名的SPF记录已经正确配置,包含cpanel服务器的IP,避免被反垃圾规则拦截
  • 确认登录的邮箱账号和From字段填写的地址完全一致,不要用别名或者其他域名地址

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:27:03