解决SMTPAuthenticationError 和 STARTTLS和 Undisclosed recipients

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

EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'xxx'

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

EMAIL_HOST_USER = 'xxx'
EMAIL_HOST_PASSWORD = 'xxx'

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

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

EMAIL_USE_TLS = False

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

from django.core.mail import send_mail

send_mail(
    'Subject here',
    'Here is the message.',
    '[email protected]',
    ['[email protected]'],
    fail_silently=False,
)

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

 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()

你可能感兴趣的:(后端)