首页 >后端开发 >Python教程 >使用 Gmail 和 Python 发送电子邮件时如何解决'服务器不支持 SMTP AUTH 扩展”错误?

使用 Gmail 和 Python 发送电子邮件时如何解决'服务器不支持 SMTP AUTH 扩展”错误?

Susan Sarandon
Susan Sarandon原创
2024-11-30 15:11:12757浏览

How to Resolve

使用 Python 通过 Gmail 发送电子邮件

尝试使用 Python 的 SMTP 库通过 Gmail 发送电子邮件时,您可能会遇到错误,指出 SMTP服务器不支持 AUTH。

错误说明:

当您尝试在不启用 TLS 加密的情况下使用 login() 方法向 SMTP 服务器进行身份验证时,会出现错误“服务器不支持 SMTP AUTH 扩展”。

使用 TLS 解决方案:

要解决此问题,请按照以下步骤启用 TLS 加密步骤:

import smtplib

# Enable TLS encryption
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()

启用 TLS 后,您可以使用 login() 方法向服务器进行身份验证。

通过 SSL 使用端口 465:

或者,您可以使用带有 SSL 加密的端口 465。为此,您需要创建一个 SMTP_SSL 对象:

import smtplib

server_ssl = smtplib.SMTP_SSL("smtp.gmail.com", 465)
server_ssl.ehlo() # optional, called by login()
server_ssl.login(gmail_user, gmail_pwd)

请注意,SSL 服务器不支持或不需要 TLS 加密,因此不要调用 server_ssl.starttls()。

发送电子邮件的示例脚本:

这是一个改进版本问题中提供的Python脚本:

def send_email(user, pwd, recipient, subject, body):

    FROM = user
    TO = recipient if isinstance(recipient, list) else [recipient]
    SUBJECT = subject
    TEXT = body

    # Prepare actual message
    message = """From: %s\nTo: %s\nSubject: %s\n\n%s
    """ % (FROM, ", ".join(TO), SUBJECT, TEXT)

    try:
        server = smtplib.SMTP("smtp.gmail.com", 587)
        server.ehlo()
        server.starttls()
        server.login(user, pwd)
        server.sendmail(FROM, TO, message)
        server.close()
        print('successfully sent the mail')
    except:
        print("failed to send mail")

以上是使用 Gmail 和 Python 发送电子邮件时如何解决'服务器不支持 SMTP AUTH 扩展”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn