小能豆

如何使用 Python 发送以 Gmail 为提供商的电子邮件?

javascript

我正在尝试使用 python 发送电子邮件(Gmail),但出现以下错误。

Traceback (most recent call last):  
File "emailSend.py", line 14, in <module>  
server.login(username,password)  
File "/usr/lib/python2.5/smtplib.py", line 554, in login  
raise SMTPException("SMTP AUTH extension not supported by server.")  
smtplib.SMTPException: SMTP AUTH extension not supported by server.

Python 脚本如下。

import smtplib

fromaddr = 'user_me@gmail.com'
toaddrs  = 'user_you@gmail.com'
msg = 'Why,Oh why!'
username = 'user_me@gmail.com'
password = 'pwd'
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()

阅读 35

收藏
2024-07-04

共1个答案

小能豆

您遇到的错误(SMTPException: SMTP AUTH extension not supported by server)通常意味着您尝试连接的服务器不支持您尝试使用的身份验证方法。

您使用的脚本似乎可以正确通过 Gmail 的 SMTP 服务器发送电子邮件,但您可以尝试以下几种方法来解决该问题:

  1. 正确的 SMTP 服务器和端口: 确保您为 Gmail 使用正确的 SMTP 服务器和端口。对于 Gmail,服务器应为 TLS smtp.gmail.com,端口应为587TLS。
  2. 检查凭证: 确保用户名和密码正确,并且您已允许安全性较低的应用访问您的 Gmail 帐户。或者,如果您启用了两步验证,则可能需要使用应用专用密码。
  3. 消息格式: 电子邮件消息应正确格式化。您应该包括诸如Subject和 之类的标题From

这是脚本的更新版本,其中考虑了以下事项:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

fromaddr = 'user_me@gmail.com'
toaddrs  = 'user_you@gmail.com'
subject = 'Subject of the email'
msg_body = 'Why, Oh why!'

# Create the email message
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddrs
msg['Subject'] = subject
msg.attach(MIMEText(msg_body, 'plain'))

username = 'user_me@gmail.com'
password = 'pwd'

try:
    # Connect to the server
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()  # Upgrade the connection to a secure encrypted SSL/TLS connection
    server.login(username, password)

    # Send the email
    server.sendmail(fromaddr, toaddrs, msg.as_string())
    print("Email sent successfully")

except smtplib.SMTPException as e:
    print(f"Error: {e}")

finally:
    server.quit()  # Terminate the SMTP session

其他注意事项:

  1. 允许安全性较低的应用: 如果您尚未启用安全性较低的应用的访问权限,则可能需要执行此操作。转到您的Google 帐户设置并启用“安全性较低的应用访问”。
  2. 应用密码: 如果您启用了两步验证,则需要创建应用专用密码。您可以从Google 应用密码页面生成此密码。
  3. 检查防火墙/网络设置: 确保您的网络或防火墙设置没有阻止连接smtp.gmail.com
  4. 使用 OAuth2: 为了获得更安全的身份验证方法,您可能希望对 Gmail 使用 OAuth2。这需要设置 Google Cloud 项目并获取必要的凭据。但是,它更复杂,通常建议用于需要更高安全性的应用程序。

通过遵循这些步骤,您应该能够使用 Gmail 的 SMTP 服务器通过 Python 发送电子邮件。

2024-07-04