跳转到主要内容

为Django构建的简单且可定制的电子邮件模板

项目描述

django-simple-mail v2.3.5 on PyPi MIT license Stable

django-simple-mail

为Django构建的简单可定制电子邮件模板

变更日志

  • 2.3.5 修复django 4中的ugettext_lazy弃用问题

  • 2.3.4 为SIMPLE_MAIL_FILE_STORAGE设置添加默认值

  • 2.3.3 为ImageSpecField添加存储设置

  • 2.3.2 添加SIMPLE_MAIL_FILE_STORAGE设置

  • 2.3.1 修复six导入问题

  • 2.3.0 停止Python 2支持并添加Django 3.0兼容性

  • 2.2.6 禁用电子邮件主题的自动转义

  • 2.2.5 从BaseSimpleMail的send_mass_mail方法中删除未使用的参数

  • 2.2.4 向BaseSimpleMail添加send_mass_mail方法

  • 2.2.3 从管理中删除操作(我们没有删除权限)

  • 2.2.2 添加Django 1.9和Python 2兼容性

  • 2.2.1 从日志中删除cssutils警告

  • 在2.2.*版本中,以下字段已被删除:from_emailfrom_namebase_url。这些参数应在代码中定义,而不是从管理员界面定义。

  • 2.*版本与1.*版本有重大变更,不向后兼容。

模板预览

基本模板是用Mailchimp编辑器构建的。

Email Preview

邮件预览

要求

此Django应用与

  • Python (>=2.7)

  • Django (>=1.9)(需要测试旧版本)

待办事项

  • 编写测试

  • 验证与Django和Python旧版本的兼容性

  • 在pythonanywhere上设置演示应用

安装

使用pip安装

pip install django_simple_mail

simple_mail添加到您的INSTALLED_APPS设置中。

INSTALLED_APPS = (
    ...
    'simple_mail',
    ...
)

然后运行

python manage.py migrate

引用Django的文档

邮件通过SMTP主机和端口发送,这些设置在EMAIL_HOSTEMAIL_PORT中指定。如果设置了EMAIL_HOST_USEREMAIL_HOST_PASSWORD设置,则用于通过SMTP服务器进行身份验证,而EMAIL_USE_TLSEMAIL_USE_SSL设置控制是否使用安全连接。

因此,您需要设置以下内容

EMAIL_HOST = ''
EMAIL_PORT = 587
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False

集成

CKEDITOR用于内容的WYSIWYG编辑

Simple Mail可以轻松与django-ckeditor集成,以获得内容的WYSIWYG编辑。要使用它

pip install django-ckeditor

然后在您的INSTALLED_APPS设置中添加ckeditor

INSTALLED_APPS = (
    ...
    'ckeditor',
    ...
)

并在您的设置中设置以下内容

SIMPLE_MAIL_USE_CKEDITOR = True

ModelTranslation用于翻译邮件

Simple Mail可以轻松与django-modeltranslation集成,以使您的邮件内容可在多种语言中使用。

pip install django-modeltranslation

然后在您的INSTALLED_APPS设置中添加modeltranslation

INSTALLED_APPS = (
    ...
    'modeltranslation',
    ...
)

并在您的设置中设置以下内容

SIMPLE_MAIL_USE_MODELTRANSALTION = True

然后运行

python manage.py sync_translation_fields

创建、注册和发送邮件

注册邮件

在您的应用中创建一个mails.py文件并定义您的邮件。

email_key属性不得超过100个字符。

from simple_mail.mailer import BaseSimpleMail, simple_mailer


class WelcomeMail(BaseSimpleMail):
    email_key = 'welcome'


simple_mailer.register(WelcomeMail)

然后运行./manage.py register_mails将这些邮件创建到数据库中。

具有密钥welcome的邮件将在您的Django管理员中可供编辑。

发送一封邮件

您可以使用以下方式发送WelcomeMail

welcome_mail = WelcomeMail()
welcome_mail.send(to, from_email=None, bcc=[], connection=None, attachments=[],
                   headers={}, cc=[], reply_to=[], fail_silently=False)

向邮件传递变量

您可以使用context属性向邮件传递变量

from simple_mail.mailer import BaseSimpleMail, simple_mailer


class WelcomeMail(BaseSimpleMail):
    email_key = 'welcome'
    context = {
        'title' : 'My email title',
        'user': 'the user'
    }


simple_mailer.register(WelcomeMail)

或者您可以创建一个set_context方法

from simple_mail.mailer import BaseSimpleMail, simple_mailer


class WelcomeMail(BaseSimpleMail):
    email_key = 'welcome'

    def set_context(self, user_id, welcome_link):
        user = User.objects.get(id=user_id)
        self.context = {
            'user': user,
            'welcome_link': welcome_link
        }


simple_mailer.register(WelcomeMail)

在发送邮件之前,您需要调用set_context

welcome_mail = WelcomeMail()
welcome_mail.set_context(user_id, welcome_link)
welcome_mail.send(to, from_email=None, bcc=[], connection=None, attachments=[],
                   headers={}, cc=[], reply_to=[], fail_silently=False)

邮件预览和测试邮件

从管理员界面,您可以预览邮件并发送测试邮件。

两种方法都使用您的context属性来渲染邮件。

如果您使用set_context方法,您可能需要创建一个set_test_context方法。

此方法不应接受任何参数

from simple_mail.mailer import BaseSimpleMail, simple_mailer


class WelcomeMail(BaseSimpleMail):
    email_key = 'welcome'

    def set_context(self, user_id, welcome_link):
        user = User.objects.get(id=user_id)
        self.context = {
            'user': user,
            'welcome_link': welcome_link
        }

    def set_test_context(self):
        user_id = User.objects.order_by('?').first().id
        self.set_context(user_id, 'http://my-webiste.com/my-path')


simple_mailer.register(WelcomeMail)

此方法影响管理员界面“上下文”部分显示的字段。

设置

以下是您可以使用的所有设置及其默认值

# enable django-modeltranslation integration
SIMPLE_MAIL_USE_MODELTRANSALTION = False
# enable django-ckeditor integration
SIMPLE_MAIL_USE_CKEDITOR = False
# set default email template
SIMPLE_MAIL_DEFAULT_TEMPLATE = 'simple_mail/default.html'
# enable/disable cssutils warning logs
SIMPLE_MAIL_LOG_CSS_WARNING = False
# storage for logo and banner
SIMPLE_MAIL_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'

邮件配置与编辑

自定义基本内容和模板颜色

您可以直接从Django管理界面更改模板的外观和感觉:页脚字段可以使用模板标签和变量。

Admin mail configuration

管理邮件配置

编辑每封邮件的内容

您可以编辑每封邮件的内容。内容、主题、按钮标签和按钮链接字段可以使用模板标签和变量。

Admin mail edition

管理邮件编辑

自定义模板

您可以定义自己的电子邮件模板

通过从您的BaseSimpleMail子类设置模板属性

from simple_mail.mailer import BaseSimpleMail, simple_mailer


class WelcomeMail(BaseSimpleMail):
    email_key = 'welcome'
    template = 'my_app/my_email_template.html'


simple_mailer.register(WelcomeMail)

或在您的设置中设置SIMPLE_MAIL_DEFAULT_TEMPLATE

SIMPLE_MAIL_DEFAULT_TEMPLATE = 'my_app/my_email_template.html'

支持

如果您遇到问题,请告知我们或提交一个拉取请求。

许可证

该项目采用MIT许可证。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

django_simple_mail-2.3.5.tar.gz (20.2 kB 查看散列)

上传时间

构建分布

django_simple_mail-2.3.5-py2.py3-none-any.whl (24.5 kB 查看散列)

上传时间 Python 2 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面