前言

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

正题

[c-alert type=”warning”]原因:阿里云服务器禁用了25端口,导致无法发送邮件。[/c-alert]

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

[c-alert type=”warning”]注意:博主用的163邮箱的SMTP,其他邮箱适当参考,原理应该差不多。[/c-alert]

首先,在 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        # 加密模式  ****** 特别注意 *****
[start-plane type=”1″]说明:

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

EMAIL_PORT = 465

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

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

[/start-plane]

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

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

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

https://www.whbwiki.com/wp-content/uploads/2021/02/图片-38-1024x149.png

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

https://www.whbwiki.com/wp-content/uploads/2021/02/图片-39-1024x340.png
[c-alert type=”success”]为了不必要的麻烦,避免踩坑,博主在宝塔面板和阿里云控制台都操作放行了465端口。[/c-alert]

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

https://www.whbwiki.com/wp-content/uploads/2021/02/图片-40-1024x209.png

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