【问题标题】:smtplib.SMTPNotSupportedError: SMTP AUTH extension not supported by serversmtplib.SMTPNotSupportedError:服务器不支持 SMTP AUTH 扩展
【发布时间】:2019-04-22 20:44:54
【问题描述】:

我是一个尝试使用 Python 3.7 发送电子邮件的 Python 新手。 我指的是以下 python 网页来整理我的代码。 https://docs.python.org/3.7/library/email.examples.html 我无法理解出了什么问题。我是否必须更新 Outlook 中的任何设置才能让电子邮件通过?奇怪的是上面的文档没有提到我的电子邮件密码

    #!/usr/bin/env python3
    import smtplib
    from email.message import EmailMessage 
    body = "Hello User,\nThis is to notify you that...."
    msg = EmailMessage()
    msg.set_content(body)
    msg['Subject'] = 'Name Clash.....'
    msg['From'] = 'pukav@outlook.com'
    msg['To'] = 'iampukav@gmail.com'
    s = smtplib.SMTP('smtp-mail.outlook.com', 587)
    s.login('pukav@outlook.com', 'mypassword')
    s.send_message(msg)
    s.quit()

错误:

在登录时“服务器不支持 SMTP AUTH 扩展。”

smtplib.SMTPNotSupportedError: 服务器不支持 SMTP AUTH 扩展。

【问题讨论】:

  • 您是否检查过 Outlook 帐户是否需要配置为接受第三方 smtp 客户端?这在 gmail 中很常见。从未尝试过使用 Outlook。它可以是“允许不安全的应用程序”之类的选项。
  • 到目前为止,我还没有在 Outlook 中找到类似的东西。我也尝试使用 gmail 帐户并启用了第 3 方选项。但我不断收到错误“smtplib.SMTPNotSupportedError:服务器不支持 SMTP AUTH 扩展。”

标签: python-3.7 smtplib


【解决方案1】:

我在 Gmail 服务器上遇到了同样的错误,并在下面找到了解决方案。
(我不确定这个解决方案是否适合 Outlook)

import smtplib
from typing import List

SMTP_HOST = "smtp.gmail.com"
SMTP_PORT = 587


def send_email(from_addr: str, to_addr: List[str], subject: str) -> None:
    msg = f"From: {from_addr}\r\nTo: {','.join(to_addr)}\r\nSubject: {subject}\r\n"

    with smtplib.SMTP(host=SMTP_HOST, port=SMTP_PORT) as server:
        server.starttls()
        server.login(SMTP_USER, SMTP_PASSWORD)
        server.sendmail(from_addr, to_addr, msg)

重要提示:
使用Gmail时,请记得开启access for less secure apps

【讨论】:

    【解决方案2】:

    创建 SMTP 连接后,您应该登录:s.login('email', 'password')

    编辑: 这是我多年来使用的代码。我用它从 G-Suite 帐户发送电子邮件:

    server = smtplib.SMTP_SSL(serverAddress, portNumber)
    server.ehlo()
    server.login(username, password)
    

    【讨论】:

    • 是的,我也尝试过这样做。 “服务器不支持 SMTP AUTH 扩展。”)smtplib.SMTPNotSupportedError:服务器不支持 SMTP AUTH 扩展。
    • 谢谢@thedadams。但是,我认为 Python 3.7.3 不支持 SSL
    • 我这么说是因为,它给了我以下错误:AttributeError: module 'smtplib' has no attribute 'SMTP_SSL'
    【解决方案3】:

    步骤:

    1. 试试这个:

      s = smtplib.SMTP('smtp.gmail.com', 587)
      s.starttls()
      s.ehlo()
      s.login(username, password)
      
    2. 如果电子邮件是 ***@gmail.com

      开启此功能:https://myaccount.google.com/lesssecureapps
      如果电子邮件是其他内容(例如 ***@outlook.com),则无需执行第 2 步

    【讨论】:

    • 他没有写 s.ehlo 答案是 starttls 和 ehlo 一起写
    猜你喜欢
    • 2022-06-17
    • 2016-09-10
    • 1970-01-01
    • 2012-08-10
    • 2012-03-02
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    相关资源
    最近更新 更多