Django项目部署到阿里云服务器无法发送邮件,发送邮件超时问题解决

时间:2023-03-08 20:18:11

前言

今天, 博主将写了好久的一个Django小项目尝试在阿里云部署上线,由于项目中需要发送邮件,博主调用了163邮箱接口,在本地测试邮件功能正常,可是上线后,邮件功能一直超时崩溃。在百度一番查资料后,最后终于得到了解决。

正题

[tip type="tip error" ]

原因:阿里云服务器禁用了25端口,导致无法发送邮件。

[/tip]

先前博主不信阿里云禁用25端口,尝试在阿里云控制台防火墙中解开25端口,结果失败,白忙活一场。不得不得认同可网上 阿里云禁用25端口的说法,25端口申请开放的难度很大。无奈之下,博主直放弃了开启25端口的念头。最后,博主选择了另外一个端口 465端口。 测试后邮件功能完美运行。

[tip type="tip worning" ]

注意:博主用的163邮箱的SMTP,其他邮箱适当参考,原理应该差不多。

[/tip]

首先,在 django项目的 settings.py 文件中设置如下:

# 发送邮件的设置
EMAIL_HOST = 'smtp.163.com' # 发送邮件的SMTP服务器
EMAIL_HOST_USER = '你的邮箱@163.com' # 发送邮箱的用户名
EMAIL_HOST_PASSWORD = 'xxxxxx' # 发送邮箱的授权码
EMAIL_PORT = 465 # 端口号 ****** 特别注意 *****
EMAIL_USE_TLS = False # 发送的模式
EMAIL_USE_SSL = True # 加密模式 ****** 特别注意 *****
[tip type="tip success" ]

说明:

邮件默认端口为 25,我们改成 465 ,故修改配置项

EMAIL_PORT = 465

邮件功能需要开启SSL,故增加配置项:

EMAIL_USE_SSL = True # 加密模式 特别注意 *

[/tip]

如果是django使用了django自带的验证模块的需要添加如下代码 :

DEFAULT_FROM_EMAIL = '你的邮箱@163.com'   # 默认发送邮件的邮箱,和发送邮箱的用户名相同

如果安装了宝塔面板,去 宝塔面板->安全 点击放行 465端口

Django项目部署到阿里云服务器无法发送邮件,发送邮件超时问题解决

若没有安装宝塔面板,去阿里云控制台防火墙 点击放行 465端口

Django项目部署到阿里云服务器无法发送邮件,发送邮件超时问题解决
[tip type="tip info" ]

为了不必要的麻烦,避免踩坑,博主在宝塔面板和阿里云控制台都操作放行了465端口。

[/tip]

最后,记得 重启 Django项目,如果还不行就 重启你的服务器 (博主没有重启)

Django项目部署到阿里云服务器无法发送邮件,发送邮件超时问题解决

如果还不行,就去你的 域名控制中心 ->点击管理 ->开启SSL证书,然后去阿里云申请一个免费的SSL证书,这样应该就没问题了。