使用SMTPLib Python时出现未经授权的发件人地址

4
我有一个非常简单的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访问,现在不确定还需要做什么来解决这个问题。

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

1个回答

6

GMX检查邮件头中“From”条目和实际发送者之间的匹配情况。您提供了一个简单的字符串作为消息,因此没有邮件头,因此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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接