【问题标题】:smtp errors when trying to send email from python vis office365尝试从 python vis office365 发送电子邮件时出现 smtp 错误
【发布时间】:2021-02-02 20:35:39
【问题描述】:
def send_mail(to, subject, body_text):
    SERVER = "smtp.office365.com"
    FROM = "myemail@mycompany.com"

    # Prepare actual message
    msg = EmailMessage()
    msg.set_content(body_text, subtype='html')
    msg['Subject'] = subject
    msg['From'] = FROM
    msg['To'] = to

    # Send the mail
    server = smtplib.SMTP(SERVER, 587)
    server.ehlo()
    server.starttls()
    server.ehlo()
    server.login("myemail@mycompany.com", "password")
    server.send_message(msg)
    server.quit()

我有这个发送电子邮件的功能。这给了我错误-

smtplib.SMTPNotSupportedError: STARTTLS extension not supported by server.

我尝试在这里遵循一些答案 - STARTTLS extension not supported by server 并修改了我的代码以在 server.starttls() 之前删除 server.ehlo() 但这给出了这个错误 -

smtplib.SMTPHeloError: (501, b'5.5.4 Invalid domain name [SN2PR01CA0061.prod.exchangelabs.com]')

还尝试通过删除导致此错误的行 server.starttls() 来运行 -

smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by server.

send_email 功能一直运行良好,直到我将调制解调器从 Xfinity 标准租用调制解调器更改为商店购买的 Netgear Nighthawk C7000。我的互联网服务提供商是 Xfinity。我不知道这是否是一个问题,但我觉得我应该提一下,因为这是自从电子邮件发送停止工作以来唯一发生的变化。

【问题讨论】:

    标签: python-3.x email smtp office365 smtplib


    【解决方案1】:

    找出问题所在 -

    调试问题 - 在server = smtplib.SMTP(SERVER, 587) 之后添加server.set_debuglevel(1) 以获得响应:

    send: 'ehlo DESKTOP-B47NVUE.hsd1.tx.comcast.net.\r\n'
    reply: b'501 5.5.4 Invalid domain name [SN4PR0701CA0045.namprd07.prod.outlook.com]\r\n'
    reply: retcode (501); Msg: b'5.5.4 Invalid domain name [SN4PR0701CA0045.namprd07.prod.outlook.com]'
    

    除了上面的回应,它还提出了这个:

    File "C:\Users\Dhruv Gami\AppData\Local\Programs\Python\Python36\lib\smtplib.py", line 752, in starttls
        "STARTTLS extension not supported by server.")
    smtplib.SMTPNotSupportedError: STARTTLS extension not supported by server.
    

    解决 - 我使用这里给出的答案 - Office365 smtp server does not respond to ehlo() in python 来解决它。

    两个地方的send_mail代码中基本上都使用server.ehlo('mylowercasehost')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-15
      • 2012-08-23
      • 1970-01-01
      • 2012-07-28
      • 1970-01-01
      • 2022-01-18
      • 2021-12-01
      相关资源
      最近更新 更多