谷歌邮箱使用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