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发送邮件时遇到了这个问题,请尝试以上方法来解决。