阿里云部署Django项目发送邮件时,端口25,465,587上的坑
今天在往阿里云上部署Django项目时,遇到一个端口的坑,花了半天终于找到问题所在。在Django项目中,发送邮件需要在settings.py中做如下的设置:EMAIL_HOST = 'smtp.qq.com'EMAIL_PORT = 25EMAIL_HOST_USER = 'xxxx@qq.com'EMAIL_HOST_PASSWORD = 'xxxxx'SERVER_HOST = '127.0
今天在往阿里云上部署Django项目时,遇到一个端口的坑,花了半天终于找到问题所在。
在Django项目中,发送邮件需要在settings.py中做如下的设置:
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'xxxx@qq.com'
EMAIL_HOST_PASSWORD = 'xxxxx'
SERVER_HOST = '127.0.0.1'
SERVER_PORT = '8000'
在本机上这个设置是没有问题的,最后调用send_mail()也能把邮件发送出去。
但是当这么部署到阿里云上时,25端口因为被阿里云封了,所以没法使用。网页上会提示504错误。
一开始想改成465端口,把settings中的设置改成:
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = 'xxxx@qq.com'
EMAIL_HOST_PASSWORD = 'xxxx'
EMAIL_USE_SSL = True
SERVER_HOST = 'xxx.xx.xxx.xx'
SERVER_PORT = '80'
但是在send_mail()发送邮件时会直接报server error 500错误。后来想是不是465端口也被封了,只好改成587端口试试。配置变成:
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'xxxx@qq.com'
EMAIL_HOST_PASSWORD = 'xxxx'
EMAIL_USE_TLS = True
SERVER_HOST = 'xxx.xx.xxx.xx'
SERVER_PORT = '80'
换成这个配置以后,发送邮件功能成功!!!
总结:
遇到这种情况首先要保证在本机上调试时代码是正确的,功能能成功,那么以后部署时出错,问题应该就出在设置上。
在部署时出错,经过查找发现问题出在send_mail()这条上,那么就围绕它解决。
有些公司的服务器对端口有限制,所以就只能查资料,然后25-465-587一个一个试下去。当然,这也要你的mail host支持这些端口,有些就不支持587。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)