Dzwebs.Net

撰写电脑技术杂文十余年

python发送邮件超过10人就提示535错误

Admin | 2021-7-8 18:42:20 | 被阅次数 | 262

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  在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次邮件。这样就解决问题了。


网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231