django2.1发送电子邮件失败:ssl.SSLError:[SSL:WRONG_VERSION_NUMBER]版本号错误(_ssl.c:833)

时间:2018-09-28 06:44:02

标签: python django ssl

我想向自己发送电子邮件,所以我尝试了。 我已经在settings.py

中设置了我的电子邮件信息
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = False 
EMAIL_USE_SSL = True   
EMAIL_HOST = 'smtp.163.com'  
EMAIL_PORT = 25     
EMAIL_HOST_USER = '*****@163.com'    
EMAIL_HOST_PASSWORD = '***'   

然后我从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,
)

然后发生了异常

ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:833)

如何解决?

2 个答案:

答案 0 :(得分:1)

您应检查使用的端口号是否正确。

您可能需要将端口从25更改为465或587,才能将SMTP与SSL配合使用;端口25通常用于非加密电子邮件。当然,这取决于您的电子邮件提供商,但这是大多数提供商所遵循的一种标准。

有关端口号的一些历史背景,我在mailgun博客上找到了this(作为众多文章之一)。

答案 1 :(得分:0)

当尝试通过类似的Web框架(web2py)和其他电子邮件服务提供商(gmail)发送电子邮件时,遇到相同的错误消息。

无论软件组件和电子邮件服务器不同,解决方案都是相同的:仔细检查计划使用的电子邮件服务的端口。例如,Gmail uses port 465 for SSL, but port 586 for TLS。正确后,即可按预期发送电子邮件。