Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError

  • Post category:Python

Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError

在使用Python发送邮件时,可能会遇到smtplib.SMTPAuthenticationError异常,该异常表示SMTP服务器拒绝了认证。本文将详细讲解如何解决Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError的问题。

原因

smtplib.SMTPAuthenticationError异常通常是由以下原因引起的:

  • 邮箱账号或密码错误
  • 邮箱开启了两步验证
  • 邮箱开启了授权码登录

解决方法

以下是解决Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError的方法:

方法1:使用授权码登录

如果您的QQ邮箱开启了授权码登录,可以使用授权码代替密码进行SMTP认证。以下是示例代码:

import smtplib
from email.mime.text import MIMETextfrom email.header import Header

# 发件人邮箱
sender = 'your_email@qq.com'
# 授权码
password = 'your_authorization_code'
# 收件人邮箱
receiver = 'recipient_email@qq.com'
# 邮件主题
subject = 'Python SMTP邮件测试'

# 邮件正文
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("发件人姓名", 'utf-8')
message['To'] = Header("收件人姓名", 'utf-8')
message['Subject'] = Header(subject, 'utf-8')

try:
    smtpObj = smtplib.SMTP_SSL('smtp.qq.com', 465)
    smtpObj.login(sender, password)
    smtpObj.sendmail(sender, receiver, message.as_string())
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("Error: 无法发送邮件", e)

在以上代码中,我们使用授权码代替密码进行SMTP认证,从而避免了smtplib.SMTPAuthenticationError异常。

方法2:关闭两步验证

如果您的QQ邮箱开启了两步验证,可以关闭两步验证,然后使用邮箱密码进行SMTP认证。以下是示例代码:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 发件人邮箱
sender = 'your_email@qq.com'
# 邮箱密码
password = 'your_email_password'
# 收件人邮箱
receiver = 'recipient_email@qq.com'
# 邮件主题
subject = 'Python SMTP邮件测试'

# 邮件正文
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("发件人姓名", 'utf-8')
message['To'] = Header("收件人姓名", 'utf-8')
message['Subject'] = Header(subject,utf-8')

try:
    smtpObj = smtplib.SMTP_SSL('smtp.qq.com', 465)
    smtpObj.login(sender, password)
    smtpObj.sendmail(sender, receiver, message.as_string())
    print("邮件发送成功except smtplib.SMTPException as e:
    print("Error: 无法发送邮件", e)

在以上代码中,我们关闭了QQ邮箱的两步验证,然后使用邮箱密码进行SMTP认证,从而避免了smtplib.SMTPAuthenticationError异常。

在以上两个示例中,我们演示了如何解决Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError的问题。如果您在使用Python发送邮件时遇到了这个问题,请尝试以上方法来解决。