在python中使用smtplib库发送邮件的时候,为什么会出现535的错误提示呢?
并且,每次都是连续发送10邮件就出问题了。
原因有两个:
1:密码与授权码的问题
2:使用循环频繁登陆帐户
解决办法:
针对问题1的解决办法:
先看发送邮件的部分代码:
host_server = 'smtp.xxx.com'
# sender_qq为发件人的邮126箱
sender_qq = 'xxxxx@126.com'
pwd = '****************'
# 发件人的邮箱
sender_qq_mail = 'xxxxx@126.com'
看见了吗?上述的pwd,不应该使用登陆邮箱的密码,而是使用邮箱的授权码。
针对问题2的解决办法:
先看下面的部分代码
# ssl登录
smtp = SMTP_SSL(host_server)
# set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式
smtp.set_debuglevel(1)
smtp.ehlo(host_server)
smtp.login(sender_qq, pwd)
msg = MIMEText(mail_content, "plain", 'utf-8')
msg["Subject"] = Header(mail_title, 'utf-8')
msg["From"] = sender_qq_mail
msg["To"] = receiver
smtp.sendmail(sender_qq_mail, receiver, msg.as_string())
smtp.quit()
上述代码中,其中 smtp.quit()这个是退出的意思。如果你使用循环的调用上述的代码,相当于每发一个邮件都会授权登陆一次,发10个邮件就得登陆十次,导致服务器拒绝登陆。亦或是IP被锁定了。频繁授权登陆,等于恶意攻击了嘛。
所以,要解决问题,就将 smtp.quit()放到循环之外即可解决问题。这样做就相当于,授权登陆一次,发送N次邮件。这样就解决问题了。