如何在Django+React项目中自定义Djoser发送的邮件内容
自定义Djoser Gmail邮件内容的修改方案
1. 先配置Django基础发件参数
要正常发送Gmail邮件,首先需要在Django项目的settings.py中配置基础SMTP参数,注意当前Gmail不支持直接使用账号密码登录,需要先开启账号两步验证后生成应用专用密码使用:
# settings.py 基础邮件配置 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_USE_TLS = True EMAIL_HOST_USER = '你的Gmail完整地址' EMAIL_HOST_PASSWORD = '你生成的Gmail应用专用密码' DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
2. 自定义Djoser邮件内容
有两种常用修改方式,可按需选择:
方式一:仅修改邮件内容文本,覆写Djoser模板
适合只需要调整邮件正文内容的场景:
- 先在Django项目根目录新建
templates/email/目录,如果是首次使用templates目录,需要在settings.py的TEMPLATES配置中指定模板路径:TEMPLATES = [ { # 其余原有配置保持不变 'DIRS': [BASE_DIR / 'templates'], } ] - Djoser默认的所有邮件模板都可以放在上述目录中覆写,常用邮件对应的模板文件名如下,分别对应HTML格式和纯文本格式邮件:
- 账号激活邮件:
activation.html、activation.txt - 密码重置邮件:
password_reset.html、password_reset.txt - 注册确认邮件:
confirmation.html、confirmation.txt
- 账号激活邮件:
- 模板中支持使用Django模板语法调用参数,比如
{{ user.username }}对应用户名、{{ url }}对应官方默认生成的验证跳转链接。
方式二:自定义邮件标题、逻辑,重写Djoser邮件类
如果需要修改邮件标题、新增自定义参数传递、调整发送逻辑,选择这种方式:
- 在你使用的Django app目录下新建
emails.py,继承Djoser对应邮件类修改属性和方法,示例如下:# 你的app名/emails.py from djoser import email # 自定义激活邮件 class CustomActivationEmail(email.ActivationEmail): # 自定义邮件标题 subject = "欢迎注册我们的平台,请激活你的账号" # 重写方法新增自定义模板参数 def get_context_data(self): context = super().get_context_data() # 可添加任意自定义参数传递到模板 context["custom_tip"] = "这是自定义的提示内容" return context # 其余要自定义的邮件(比如密码重置邮件)也可以按同样方式继承重写 class CustomPasswordResetEmail(email.PasswordResetEmail): subject = "你的账号密码重置申请" - 在
settings.py的DJOSER配置块中注册你自定义的邮件类,覆盖默认配置:# settings.py Djoser配置 DJOSER = { # 你原有已配置的Djoser参数保持不变 'EMAIL': { 'activation': '你的app名.emails.CustomActivationEmail', 'password_reset': '你的app名.emails.CustomPasswordResetEmail', # 其余需要自定义的邮件都可以在这里对应配置 } }
提示:配置修改完成后需要重启Django服务生效,测试时如果发送失败优先检查Gmail应用专用密码是否配置正确,是否有SMTP端口访问限制。
内容的提问来源于stack exchange,提问作者Karlo Tevzadze
相关产品推荐
相关产品推荐

