欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

获取授权码,解决python发邮件报错:535, b'Login Fail. Please enter your authorization code to login

程序员文章站 2022-03-18 09:25:10
...

利用python可以非常方便的实现邮件发送。代码也非常好理解。

  • 思路分三大块:

  1. 登陆邮箱
  2. 编辑邮件内容
  3. 发送

  • 正确的代码实现

import smtplib
from email.mime.text import MIMEText

# 登陆邮箱
sent=smtplib.SMTP()
sent.connect('smtp.qq.com',25)
mail_name="aaa@qq.com" # 发送人邮箱地址
mail_password = "XXXXXXXX" # 注意:这里不是密码,而应该填写授权码!!
sent.login(mail_name, mail_password) # 登陆

# 编辑邮件内容
to = ['aaa@qq.com'] # 收件人邮箱地址
content = MIMEText('你好,我是圣洁不吃冰淇淋????') # 正文内容
content['Subject'] = '漂流瓶' # 邮件标题
content['From'] = mail_name # 发件人
content['To'] =','.join(to) #收件人,用逗号连接多个邮件,实现群发

# 发送邮件
try:
    sent.sendmail(mail_name, to, content.as_string())  #3个参数 发送人,收件人,邮件内容
    print('Success')
    sent.close()
except smtplib.SMTPException:
    print("Error:Fail")

  • 错误的代码实现

其他部分的代码内容一样,但是在登陆邮箱部分,如果mail_password 填写的是你的真实的qq密码,则会收到报错。

# 登陆邮箱
sent=smtplib.SMTP()
sent.connect('smtp.qq.com',25)
mail_name="aaa@qq.com"
mail_password = "*******" # 如果填写真实的qq密码,是会登陆失败的
sent.login(mail_name, mail_password) #登陆

然后,你会收到这样的报错信息:

SMTPAuthenticationError: (535, b’Login Fail. Please enter your authorization code to login. More information in http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256’)


  • 报错分析

报错是出在sent.login(mail_name, mail_password)这个语句。

原因在于登陆时候,需要使用授权码替代密码。QQ邮箱推出了授权码,授权码用于第三方客户端登录,代替了第三方登录时使用的个人邮箱密码。


  • 如何获取授权码

获取授权码一点都不复杂。

  1. 登陆qq邮箱,点击“设置” — “账户”。
    获取授权码,解决python发邮件报错:535, b'Login Fail. Please enter your authorization code to login
  2. 找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务” ,点击“开启” SMTP服务。获取授权码,解决python发邮件报错:535, b'Login Fail. Please enter your authorization code to login
  3. 根据提示要求,发送指定短信,即可获取授权码。
    获取授权码,解决python发邮件报错:535, b'Login Fail. Please enter your authorization code to login

  • 总结

  1. python作为第三方客户端登录,应当使用“授权码”替代密码用作登陆。

  2. 获取授权码:
    qq邮箱 — “设置” — “账户— “POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”

快给自己发一封邮件试试看吧~

相关标签: python smtp