Django Mail Templated 使用教程
1、项目介绍
Django Mail Templated
是一个围绕 Django 标准 EmailMessage
类和 send_mail()
函数的微小封装,旨在通过 Django 模板系统轻松创建电子邮件消息。该项目遵循 OOP、KISS 和灵活性原则,虽然简单但功能齐全,并且与 Django 的内置 EmailMessage
和 send_mail()
函数兼容。
2、项目快速启动
安装
首先,通过 pip 安装 django-mail-templated
:
pip install django-mail-templated
配置
在 Django 项目的 settings.py
文件中注册应用:
INSTALLED_APPS = (
'mail_templated',
)
创建模板
创建一个电子邮件模板文件,例如 email/hello.tpl
:
{% extends "mail_templated/base.tpl" %}
{% block subject %}
Hello {{ user.name }}
{% endblock %}
{% block body %}
{{ user.name }}, this is a plain text message.
{% endblock %}
{% block html %}
{{ user.name }}, this is an <strong>html</strong> message.
{% endblock %}
发送邮件
使用 send_mail
函数发送邮件:
from mail_templated import send_mail
send_mail('email/hello.tpl', {'user': user}, from_email, [user.email])
或者使用 EmailMessage
类:
from mail_templated import EmailMessage
message = EmailMessage('email/hello.tpl', {'user': user}, from_email, to=[user.email])
message.send()
3、应用案例和最佳实践
应用案例
假设你有一个用户注册功能,当用户注册成功后,系统自动发送一封欢迎邮件。你可以创建一个模板 email/welcome.tpl
:
{% extends "mail_templated/base.tpl" %}
{% block subject %}
Welcome to Our Site, {{ user.name }}!
{% endblock %}
{% block body %}
Dear {{ user.name }}, thank you for registering.
{% endblock %}
{% block html %}
Dear {{ user.name }}, <br>thank you for registering.
{% endblock %}
在视图函数中发送邮件:
from mail_templated import send_mail
def register_user(request):
# 用户注册逻辑
user = User.objects.create_user(username, email, password)
send_mail('email/welcome.tpl', {'user': user}, from_email, [user.email])
return redirect('home')
最佳实践
- 模板继承:利用 Django 模板继承功能,创建一个基础模板,其他模板继承该基础模板。
- 上下文管理:确保传递给模板的上下文数据是安全的,避免敏感信息泄露。
- 测试覆盖:编写单元测试,确保邮件发送功能正常工作。
4、典型生态项目
Django Mail Templated
可以与其他 Django 生态项目结合使用,例如:
- Django Allauth:用于用户认证和社交账号登录,结合
Django Mail Templated
发送验证邮件和密码重置邮件。 - Django Celery:使用 Celery 异步发送邮件,提高系统响应速度。
- Django REST Framework:结合 DRF 构建 API,实现前后端分离的邮件发送功能。
通过这些生态项目的结合,可以构建更加强大和灵活的邮件发送系统。