解决SMTPAuthenticationError 和 STARTTLS和 Undisclosed recipients

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

EMAIL_HOST_USER = 'xxx@xx.com'
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 隐藏收件人
在这里插入图片描述
先说说收到这样的邮件 是发送成功了么?我明确的告诉你,是的,发送成功了。
那么为什么没有显示出收件人呢?代码程序写的有问题导致的。下面是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,
)

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

 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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值