python - 使用 SMTPLib Python 时获取未经授权的发件人地址

标签 python email smtp smtplib

我编写了一个非常简单的 Python 脚本来自动发送电子邮件。这是它的代码:

import smtplib

From = "LorenzoTheGabenzo@gmx.com"
To = ["LorenzoTheGabenzo@gmx.com"]

with smtplib.SMTP('smtp.gmx.com', 587) as smtp:
    smtp.ehlo()
    smtp.starttls() 
    smtp.ehlo()

    smtp.login("LorenzoTheGabenzo@gmx.com", Password)

    Subject = "Test"
    Body = "TestingTheBesting"
    Message = f"{Subject}\n\n{Body}"

    smtp.sendmail(From, To, Message)

每当我运行此代码时,我都会收到一个非常奇怪的错误,告诉我此发件人是“未经授权的发件人”。这是完整的错误

File "test.py", line 17, in <module>    smtp.sendmail(From, To, Message)
  File "C:\Users\James\AppData\Local\Programs\Python\Python37-32\lib\smtplib.py", line 888, in sendmail888, in sendmail    raise SMTPDataError(code, resp)smtplib.SMTPDataError: (554, b'Transaction failed\nUnauthorized sender address.')

我已经在 GMX 设置中启用了 SMTP 访问,但我不确定现在还需要做什么来解决此问题。

注意:我知道变量密码尚未定义。这是因为我在发布之前故意删除了它,它是在我的原始代码中定义的。

最佳答案

GMX 检查消息 header 中 header 中的“发件人”条目与实际发件人之间的匹配情况。您提供了一个简单的字符串作为消息,因此没有 header ,因此出现 GMX 错误。为了解决这个问题,您可以使用电子邮件包中的消息对象。

import smtplib
from email.mime.text import MIMEText

Subject = "Test"
Body = "TestingTheBesting"
Message = f"{Subject}\n\n{Body}"
msg = MIMEText(Message)

msg['From'] = "LorenzoTheGabenzo@gmx.com"
msg['To'] = ["LorenzoTheGabenzo@gmx.com"]

with smtplib.SMTP('smtp.gmx.com', 587) as smtp:
    smtp.ehlo()
    smtp.starttls() 
    smtp.ehlo()

    smtp.login("LorenzoTheGabenzo@gmx.com", Password)


    smtp.sendmail(msg['From'], msg['To'], msg)

关于python - 使用 SMTPLib Python 时获取未经授权的发件人地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57234829/

相关文章:

python - Python中获取父类的名称

python - 如果匹配字符串(不区分大小写),Pandas 删除行

node.js - 带有 Docker 的 Nodemailer

python - 无法通过 Python 从 Ubuntu 上的 Gmail 发送电子邮件

python - 在派生自 `object` 的类中调用 super().__init__() ?

python - 防止 Python 在加载脚本时加载脚本的某些部分

email - 很少搜索自定义 header 值

java - 保存电子邮件附件

openssl - EasyPhp:如何启用 Openssl

python - 通过 python 电子邮件发送电子邮件时 HTML 无法正确呈现