【问题标题】:Getting unauthorized sender address when using SMTPLib Python使用 SMTPLib Python 时获取未经授权的发件人地址
【发布时间】:2019-12-05 16:07:16
【问题描述】:

我编写了一个非常简单的 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 访问,但我不确定现在还可以做些什么来解决这个问题。

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

【问题讨论】:

    标签: python email smtp smtplib


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-16
      • 2016-09-11
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      相关资源
      最近更新 更多