我编写了一个非常简单的 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/