在博客 个人网站搭建(Day 19)— Django-User 用户邮箱认证 中提到了我们新的注册功能会发送激活邮件给用户,在本地测试时使能够正常地发送邮件的,但是在部署到阿里云后发现在发送邮件时会出错,经过检查发现是阿里云官方禁用了邮件的发送端口(25号端口),想必是防止阿里云的服务器被滥用来发送垃圾邮件叭,可以通过申请来解决,但是处理申请的手续比较麻烦,可能花费很多的时间还是未能通过审核,所以在这里我们通过修改我们的项目文件配置来使用其他端口。
这是我们原来的 settings.py 中的配置
EMAIL_HOST = "smtp.sina.com"
EMAIL_PORT = 25
EMAIL_HOST_USER = "xxxxxxxxx@sina.com" # 你的邮箱账号
EMAIL_HOST_PASSWORD = "xxxxxxxxx" # 你的邮箱密码
EMAIL_USE_TLS = False # 这里是 False
EMAIL_FROM = "xxxxxxxxx@sina.com" # 你的邮箱账号
DEFAULT_FROM_EMAIL = SERVER_EMAIL = EMAIL_HOST_USER
我们通过修改settings.py中的部分代码来使用465/587端口
465/587端口的功能及区别如下所示:

使用465端口:
EMAIL_HOST = "smtp.sina.com"
EMAIL_PORT = 465
EMAIL_HOST_USER = "xxxxxxxxx@sina.com" # 你的邮箱账号
EMAIL_HOST_PASSWORD = "xxxxxxxxx" # 你的邮箱密码
EMAIL_USE_TLS = False
EMAIL_USE_SSL = True
EMAIL_SUBJECT_PREFIX = u'[Schnee]' #为邮件Subject-line前缀
EMAIL_FROM = "xxxxxxxxx@sina.com" # 你的邮箱账号
DEFAULT_FROM_EMAIL = SERVER_EMAIL = EMAIL_HOST_USER
使用587端口:
EMAIL_HOST = "smtp.sina.com"
EMAIL_PORT = 587
EMAIL_HOST_USER = "xxxxxxxxx@sina.com" # 你的邮箱账号
EMAIL_HOST_PASSWORD = "xxxxxxxxx" # 你的邮箱密码
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False
EMAIL_SUBJECT_PREFIX = u'[Schnee]' #为邮件Subject-line前缀
EMAIL_FROM = "xxxxxxxxx@sina.com" # 你的邮箱账号
DEFAULT_FROM_EMAIL = SERVER_EMAIL = EMAIL_HOST_USER
关于 EMAIL_USE_TLS 以及 EMAIL_USE_SSL 的设置可参考这个:

在将个人网站从本地部署到阿里云后,发现25号邮件端口被禁用,导致无法发送激活邮件。为解决此问题,无需申请解封,而是直接修改Django项目的settings.py配置,使用465或587端口,配合EMAIL_USE_TLS或EMAIL_USE_SSL设置,实现邮件发送功能。
— 25号端口被阿里云禁用,无法发送邮件&spm=1001.2101.3001.5002&articleId=90812226&d=1&t=3&u=6ef40265cd2e40778d140835c76d032d)
3332

被折叠的 条评论
为什么被折叠?



