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

django-simple-mail的Python项目详细描述


django-simple-mail v2.2.6 on PyPiMIT licenseStable

Django简单邮件

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

变更日志

  • 2.2.6禁用电子邮件主题的自动转义
  • 2.2.5从的send_mass_mail方法中删除未使用的参数 BaseSimpleMail
  • 2.2.4将send_mass_mail方法添加到BaseSimpleMail
  • 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=(...'simple_mail',...)

然后运行:

python manage.py migrate

引用Django的文档:

Mail is sent using the SMTP host and port specified in the ^{tt12}$ and ^{tt13}$ settings. The ^{tt14}$ and ^{tt15}$ settings, if set, are used to authenticate to the SMTP server, and the ^{tt16}$ and ^{tt17}$ settings control whether a secure connection is used.

所以您需要设置以下内容

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

集成

ck内容的所见即所得版本的编辑器

简单邮件与django-ckeditor轻松集成,实现所见即所得 内容的版本。使用它:

pip install django-ckeditor

然后将ckeditor添加到已安装的应用程序设置中。

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

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

SIMPLE_MAIL_USE_CKEDITOR = True

翻译电子邮件的模型翻译

简单邮件很容易与django-modeltranslation集成以获取 您的电子邮件内容有多种语言。

pip install django-modeltranslation

然后将modeltranslation添加到已安装的应用程序设置中。

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

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

SIMPLE_MAIL_USE_MODELTRANSALTION = True

然后运行:

python manage.py sync_translation_fields

创建、注册和发送邮件

注册邮件

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

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

fromsimple_mail.mailerimportBaseSimpleMail,simple_mailerclassWelcomeMail(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属性将变量传递给电子邮件:

fromsimple_mail.mailerimportBaseSimpleMail,simple_mailerclassWelcomeMail(BaseSimpleMail):email_key='welcome'context={'title':'My email title','user':'the user'}simple_mailer.register(WelcomeMail)

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

fromsimple_mail.mailerimportBaseSimpleMail,simple_mailerclassWelcomeMail(BaseSimpleMail):email_key='welcome'defset_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方法。

此方法不应采用任何参数:

fromsimple_mail.mailerimportBaseSimpleMail,simple_mailerclassWelcomeMail(BaseSimpleMail):email_key='welcome'defset_context(self,user_id,welcome_link):user=User.objects.get(id=user_id)self.context={'user':user,'welcome_link':welcome_link}defset_test_context(self):user_id=User.objects.order_by('?').first().idself.set_context(user_id,'http://my-webiste.com/my-path')simple_mailer.register(WelcomeMail)

此方法影响context中显示的字段 管理员。

设置

以下是您可以使用的所有设置,默认值为:

# 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

邮件配置和版本

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

直接从django更改外观或模板 管理员:页脚字段可以使用模板标记和变量。

Admin mail configuration

管理邮件配置

编辑每个邮件的内容:

您可以编辑每个邮件的内容。内容subjectbutton labelbutton link字段可以使用 模板标记和变量。

Admin mail edition

管理邮件版本

自定义模板

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

通过设置template属性 BaseSimpleMail子类:

fromsimple_mail.mailerimportBaseSimpleMail,simple_mailerclassWelcomeMail(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'

支持

如果您有问题,请让我们知道或提交拉取请求。

许可证

这个项目是根据麻省理工学院的许可证授权的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java解析一个文本文件,如果内容是一种特定的格式,就打印它   java如何使jbutton在另一个组件中执行键盘笔划   连接到独立帐户的java Stripe   java在数据库连接过程中出错。。。初始连接   一个系列JavaFX中特定节点的java集样式   java重建recycler视图会导致它消失   在codechef上提交java Getting runtime(NZEC)时出错   Java类路径设置错误   java如何显示数组中2个数字之间的信息?   java为什么新的GC只有很长的用户时间?   如何解决java。关于此代码的lang.OutOfMemoryError   通过应用程序在Facebook粉丝页面上发布java帖子   java Red5服务器无法启动   系统输出Java读取文本文件外置行   java整数。Parse对excel获取的字符串抛出NumberFormatException   有一个Java数组列表;如何按每个数组的最后一个元素排序?   java需要txt文件中的数据(以逗号分隔)来用现有类中的对象填充arraylist