当前位置:   article > 正文

解决SMTPAuthenticationError 和 STARTTLS和 Undisclosed recipients_python发送邮件5.7.3 authentication unsuccessful

python发送邮件5.7.3 authentication unsuccessful

一. 调试邮件的时候,遇到下面的问题:
SMTPAuthenticationError: (535, ‘5.7.3 Authentication unsuccessful’)
看错误提示,应该是账号密码不对,我通过页面使用账号和密码登录了,而且是成功登录的,那么问题来了,为啥还报错呢?
我用python开发 发邮件功能,有两个参数需要设置:

EMAIL_HOST_USER = 'xxx@xx.com'
EMAIL_HOST_PASSWORD = 'xxx'
  • 1
  • 2

我在测试的时候,就是用上面的形式进行测试的,结果报错如题,以为确定密码没有问题,后来我改了用户名就通过了!!!

EMAIL_HOST_USER = 'xxx'
EMAIL_HOST_PASSWORD = 'xxx'
  • 1
  • 2

所以发现问题在哪了吧,用户名是不需要‘@’和后缀的。

二. SMTPException: STARTTLS extension not supported by server
这个报错是因为我公司的邮箱服务器不使用加密规则,需要在项目的设置中改成

EMAIL_USE_TLS = False
  • 1

三. Undisclosed recipients 隐藏收件人
在这里插入图片描述
先说说收到这样的邮件 是发送成功了么?我明确的告诉你,是的,发送成功了。
那么为什么没有显示出收件人呢?代码程序写的有问题导致的。下面是django官方给的例子,就能触发上面的现象。

from django.core.mail import send_mail

send_mail(
    'Subject here',
    'Here is the message.',
    'from@example.com',
    ['to@example.com'],
    fail_silently=False,
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

那么正确的写法是什么?如下

 from datetime import date
 from email import Utils
 from email import Header
 from email.mime.text import MIMEText
 DEFAULT_FROM_EMAIL = “邮件服务器地址”
 
 def sendmail(self, subject, content, temail, femail=DEFAULT_FROM_EMAIL, priority="3"):
        mime = MIMEText(content, 'html', 'utf-8')
        mime['To'] = ", ".join(temail)  # temail 是list
        mime['From'] = femail
        mime['Subject'] = Header.Header(subject, 'utf-8')
        mime['X-Priority'] = priority
        mime['Date'] = Utils.formatdate(localtime=1)
        s = smtplib.SMTP(EMAIL_HOST)
        s.sendmail(femail, temail, mime.as_string())
        s.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/601990
推荐阅读
相关标签
  

闽ICP备14008679号