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

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

  • 思路分三大块:

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

  • 正确的代码实现

import smtplib
from email.mime.text import MIMEText

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

# 编辑邮件内容
to = ['receiver@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="sender@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邮箱,点击“设置” — “账户”。
    在这里插入图片描述
  2. 找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务” ,点击“开启” SMTP服务。在这里插入图片描述
  3. 根据提示要求,发送指定短信,即可获取授权码。
    在这里插入图片描述

  • 总结

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

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

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

  • 15
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值