谷歌邮箱使用python自动化发送邮件出现smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not a


今天学习使用邮箱自动化办公的过程中run时一直出现如下错误;smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted.

 1 import smtplib
 2 from smtplib import SMTP_SSL
 3 from email.mime.text import MIMEText
 4 from email.mime.multipart import MIMEMultipart
 5 from email.header import Header
 6 
 7 host_server = 'smtp.gmail.com'
 8 
 9 
10 sender_gmail = 'xxxxxxxx@gmail.com'
11 pwd = 'xxxxxxxxxxx'     #邮箱密码
12 
13 sender_gmail_mail = 'xxxxxxxx@gmail.com'   #发件人
14 receiver = 'xxxxxxxxxxx@qq.com'   #收件人
15 
16 mail_title = 'python自动化'  #邮件标题
17 
18 mail_content = '你好这是使用python进行测试'  #正文
19 
20 msg = MIMEMultipart()   #邮件主体
21 msg['subject'] = Header(mail_title,'utf_8')
22 msg['From'] = sender_gmail_mail
23 msg['To'] = Header('test','UTF-8')
24 msg.attach(MIMEText(mail_content,'plain','utf-8'))  #邮件正文 plain无格式
25 
26 stmp = SMTP_SSL(host_server)   #ssl登录
27 
28 stmp.login(sender_gmail,pwd)
29 stmp.sendmail(sender_gmail_mail,receiver,msg.as_string())
30 stmp.quit()

解决方案

网上查找资料需要进行如下设置在谷歌邮箱中

1.确定账号未被限制,在浏览器上能正常登陆gmail.
2.在设置->转发和 POP/IMAP 中开启pop和imap,两个都要开启.
3.开启账号的二步验证:帐户和导入->更改密码恢复选项 查看两步验证行,若是停止状态则点击根据指标开启两步验证
4.生成16位应用专用密码:https://security.google.com/settings/security/apppasswords
在这里根据提示生成一个应用专用密码,生成成功后复制密码然第5步。
5.帐户和导入->更改密码 把你的原始密码更改为刚生成的16位密码。
把密码填入程序中,现在smtp可以发送成功了

必须开启两步验证,及使用专用密码登录,否则报错

参考
原文链接:https://blog.csdn.net/bichir/article/details/51506474