阿里云部署Django项目邮件配置出错

最近用阿里云部署了一个django项目,里面用到了django邮件功能,发现邮件不能发送出去,但是数据库里面有记录,查了一下,发现是阿里云禁用了25端口,导致用25端口配置的邮箱不能用,一般的邮件发送使用 smtp协议发送是基于25端口,但是很多云服务器平台默认将 25 端口封锁了,导致在本地开发调试都是可以的,但是到部署到线上后,就会提示错误。

传统配置:

EMAIL_HOST = "smtp.163.com"   #这里使用的是163邮箱
 
EMAIL_PORT = 25
 
EMAIL_HOST_USER = "邮箱用户名"
 
EMAIL_HOST_PASSWORD = "授权码"
 
EMAIL_FROM = '任意名字<邮箱用户名>'

但是上述配置现在只对本机运行有用,阿里云屏蔽了25端口,邮件发送会失败,这个时候解决方案就有几种

第一种就是申请25端口解封,鼠标移上右上角个人中心处,选择“安全管控”
阿里云部署Django项目邮件配置出错_第1张图片
然后点击“25端口解封申请”,出来的申请信息以一一填写好就行
阿里云部署Django项目邮件配置出错_第2张图片
不过这种申请难度比较大,除非是比较大的,商业化的服务器,一般轻量级的,个人用的都很难通过审核,它会建议你用465加密端口
阿里云部署Django项目邮件配置出错_第3张图片

所以第二种方法就是修改端口号,用465或者其他端口,我们以163邮箱为例

EMAIL_HOST = "smtp.163.com"
 
EMAIL_PORT = 465
 
EMAIL_HOST_USER = "邮箱用户名"
 
EMAIL_HOST_PASSWORD = "授权码"
 
EMAIL_USE_SSL = True   # 打开ssl协议

EMAIL_USE_TLS = False  # 一般都为False
 
EMAIL_FROM = '任意名字<邮箱用户名>'

这样就基本配置好可以使用了。注意,有时QQ邮箱465端口不行,那我们可以设置为587端口,与此同时,这里的EMAIL_USE_TLS一定要改为True,官方文档中有说到,而且EMAIL_USE_SSL和EMAIL_USE_TLS两个不能同时为True,如果出现了服务器就会报502错误!

EMAIL_USE_TLS
默认值:False

与SMTP服务器通讯时是否使用TLS(安全)连接。 这用于显式TLS连接,通常在端口587上。如果遇到挂起的连接,请参阅隐式TLS设置EMAIL_USE_SSL。

EMAIL_USE_SSL
默认值:False

与SMTP服务器通信时是否使用隐式TLS(安全)连接。 在大多数电子邮件文档中,这种TLS连接类型称为SSL。 通常在端口465上使用。如果遇到问题,请参阅显式TLS设置EMAIL_USE_TLS。

请注意,EMAIL_USE_TLS / EMAIL_USE_SSL是互斥的,因此仅将其中一项设置设为True。

p.s.下面列出来了国内大型的邮件服务商的一些基本信息
阿里云部署Django项目邮件配置出错_第4张图片
阿里云部署Django项目邮件配置出错_第5张图片
阿里云部署Django项目邮件配置出错_第6张图片

另外阿里云官方也有类似的帮助文档(非django):使用SSL加密465端口发信样例及Demo

基本上照着这里的做,都能解决不能发送邮件这个问题。

你可能感兴趣的:(Django开发)