面向django的模板/事务电子邮件抽象

django-templated-email的Python项目详细描述


而对于这一点,目前还未得到足够的关注度,对于一个具体的django范本邮件
对于一个具体的======================================
:作者:bradley whittington(http://github.com/bradwittington,http://twitter.com/darb)
:测试:travisbadge coveragebadge正在添加抄送和密件抄送收件人,
可配置的模板命名和位置。

send_templated_email方法可以被认为是电子邮件的呈现到U响应的快捷方式。

确保您阅读了正确的文档:

develop branch:https://github.com/vintasoftware/django templated email/blob/develop/readme.rst

stable pypi/master:https://github.com/vintasoftware/django templated email/blob/master/readme.rst

开始-安装安装django模板电子邮件

您可以将以下内容添加到您的设置中.py(但它可以正常工作):

…代码块::python

templated_email_backend='templated_email.backends.vanilla_django.templatebackend'

您可以使用快捷方式版本
templated_email_backend='templated_email.backends.vanilla_django'

您还可以直接使用类
从模板的电子邮件.backends.vanilla django import templatebackend
模板的电子邮件后端=模板的后端



>发送模板的电子邮件
=vanilla django templatebackend示例用法


…代码块::python

from templated_email import send_templated_mail
send_templated_mail(
template_name='welcome',
from_email=@example.com',
recipient_list=['to@example.com'],
context={
"用户名":请求.用户.用户名,
"全名":请求.用户.获取全名,
"注册日期":请求.用户.加入日期

可选:
cc=['cc@example.com',
#bcc=['bcc@example.com'],
headers={'my-custom-header':'custom value'},
它将返回一个django**emailmessage**对象,使用**vanilla_django**后端准备:

…代码块::python

from templated_email import get_templated_mail
get_templated_mail(
template_name='welcome',
from_email=@example.com',
to=['to@example.com'],
context={
"用户名":请求.用户.用户名,
"全名":请求.用户.获取全名,
"注册日期":请求.用户.加入日期

可选:
cc=['cc@example.com',
#bcc=['bcc@example.com'],




您还可以使用**cc=['example@example.com']****来**cc**和**bcc**收件人。


*我的应用程序/模板/模板的电子邮件/欢迎。电子邮件*:

…代码块::python

{%block subject%}我的主题是{{username}{%endblock%}
{%block plain%}
hi{{{full{u name},

您刚刚注册了我的网站,使用:
用户名:{{username}
加入日期:{{signup}

谢谢,摇滚!
{%endblock%}

代码块::python

{%block html%}
<;p>;hi{{{full{name}},<;p>;

<;p>;您刚刚注册了我的网站,使用的是:
<;dl>;
<;dt>;用户名<;dd>;{{username}<;/dd>;
<;dt>;加入日期<;dt>;<;dd>;{{注册日期}<;dd>;
<;dl>;
<;p>;


<;p>;谢谢,摇滚!<;/p>;
{%endblock%}


也可以使用"html2text<;https://pypi.python.org/pypi/html2text>;"从HTML计算普通部分。如果未指定普通块,并且安装了"html2text<;https://pypi.python.org/pypi/html2text>;"``包,则将从HTML部分计算普通部分。您可以在设置中禁用此行为。py:

…代码块::python

代码块::python

def convert_html_to_text(html):



templated_email_plain_function=convert_html_to_text

代码块::python

templated_email_template_dir='templated_email/'使用''作为顶级模板目录,如果希望将一组模板存储在不同的目录中,请确保有一个斜杠
模板电子邮件文件扩展名='电子邮件'

您还可以为每次调用**发送模板电子邮件**时的**模板前缀**和**模板后缀**设置一个值。请记住要包含一个斜杠。



>与"django anymail<;https://github.com/anymail/django anymail>;一起使用` `
>========================================================================

>anymail将多个事务性电子邮件服务提供商(ESP)集成到django中,
是的使用一致的API,您可以使用ESP添加的功能,而无需将代码锁定到特定的ESP。它支持Mailgun、Postmark、SendGrid、SparkPost等功能。

您可以将其与Django模板电子邮件一起使用,只需按照其"快速入门"中的说明操作即可。https://anymail.readthedocs.io/en/latest/quickstart/>;``要配置它,


您可以选择使用他们的自定义"emailMessage"<;https://anymail.readthedocs.io/en/latest/sending/anymail\u additions/\anymail.message.anymailmessage>;`使用以下设置使用django模板电子邮件初始化:

…代码块::python

模板化电子邮件多选项电子邮件可以使用*inline image*类将内联图像添加到电子邮件中。




代码块::python

"rb")作为lena:
image=lena.read()

代码块:python

R/> BR/>代码块::python

在html模板块上添加图像:

…代码块::html

<;img src="{{lena_image}">;

注意:添加到上下文中的所有*inlineimage*对象都将附加到电子邮件,即使模板中没有使用这些链接。



代码块:python

代码块::python

代码块::python在发送电子邮件时使用*create_link*参数。
发送模板化的邮件(
模板名='welcome',from_email='from@example.com',
收件人列表=['to@example.com',
上下文={},create_link=true)

将链接添加到模板。

…代码块::html

<;!--使用"如果"链接将只显示在电子邮件上。-->;
{%如果电子邮件是uuid%}
<;!--注意:您需要添加您的站点,因为您需要从电子邮件访问它-->;
您可以在Web上查看此电子邮件:
<;a href="http://www.your site.com{%url"模板的电子邮件:show_e mail'uuid=email_uid%}">;
这里
<;/a>;
{%endif%}

注意:
-呈现的电子邮件副本将存储在数据库中。如果您发送的电子邮件太多,这可能会增加
。您负责管理它。
-如果您使用*inlineimage*所有图像都将上载到您的媒体存储中,
请记住这一点。




基于类的视图
===


在提交表单后发送电子邮件非常常见。我们包含一个mixin
用于任何继承自django的formmixin的视图。


在您的视图中添加mixin和通常django的属性:

。代码块::python

from templated_email.generic_views import templatedemailformviewmixin

class author createview(templatedemailformviewmixin,createview):
model=author
fields=['name','email']
success_url='/create_author/'
template_name='author s/create_author.html'

`

现在,您可以使用以下属性/方法自定义其行为:


属性:

**模板化的电子邮件模板名称**(如果不实现**模板化的电子邮件模板名称()**,则必须使用):
字符串命名要用于电子邮件。
ie:templated_email_template_name="Welcome"。

**templated_email_send_on_success**(默认值:true):
此属性告诉django templated email在表单有效时发送电子邮件。

**templated_email_send_on_success**(默认值:false):
属性告诉django模板电子邮件在表单无效时发送电子邮件。

**模板电子邮件来自电子邮件**(默认值:**设置。模板电子邮件来自电子邮件**):
包含发送电子邮件的电子邮件的字符串from.

方法:

**templated_email_get_template_names(self,valid)**(如果未设置**templated_email_template_name**,则为必需):
如果方法返回字符串,则将其用作模板来呈现电子邮件。如果它返回一个列表,它将使用第一个现有模板发送
电子邮件*。

**模板化的电子邮件收件人(自我,表单)**(强制):
返回电子邮件将发送到的收件人列表。
即:
。代码块::python

def templated_get_recipients(self,form):
return[form.data['email']

**templated_get_context_data(**kwargs)**(可选):
使用此方法向用于呈现模板的上下文添加额外数据。您应该从调用super获取父类的上下文。代码块::python

def templated_email_get_context_data(self,**kwargs):
context=super(thisclassview,self).模板化电子邮件获取上下文数据(**kwargs)
您应该调用super来获取默认的Kwargs。
即:
…代码块::python

def templated_-get_-send_-email_-kwargs(有效,格式):
kwargs=super(ThisClassView,self)。templated_-email_-get_-send_-email_-kwargs(有效,表单)
kwargs['bcc']=['admin@example.com']
return kwargs

**templated_email_send_templated_mail(*args,**kwargs)**(可选):
此方法调用django templated email的*send_templated_mail*方法。例如,您可以将此方法更改为使用芹菜的任务或处理错误。





state=open

您应该注意:

*您对**发送模板的邮件**的调用应为**模板目录**设置一个值,这样您就可以将应用程序特定模板的副本保存在应用程序本地(尽管如果您将其存储在*<;您的应用程序>;中,加载程序会找到您的电子邮件模板;/模板/模板电子邮件*,如果**模板电子邮件模板目录**未被过度隐藏)
*如果您(而且您应该)设置**模板目录**的值,请记住包含一个斜杠,即.*我的应用程序的电子邮件/'*
*部署的应用程序可能使用不同的后端,而该后端不使用django模板后端,因此请在自述文件中注明警告开发人员,如果他们已经在使用django模板后端的电子邮件,则需要确保他们的电子邮件提供商可以发送您的所有模板(理想情况下,在方便的地方枚举这些模板)


有关特定后端的说明
==


因此不需要特殊的配置,可以开箱即用。默认情况下,它假定以下设置(如果您希望覆盖它们):

…代码块::python

templated_email_template_dir='templated_email/'使用''作为顶级模板dir
templated_email_file_extension='email'

对于传统用途,可以在设置文件中指定电子邮件主题(但是,首选方法是使用**{%块模板中的subject%}**:

…代码块::python


}


此外,您还可以调用**send_templated_mail**,并可选地重写以下参数:


template_prefix='your_template_dir/'';重写方法查找电子邮件模板的位置(或者,使用template_dir)
template_suffix='email'#覆盖电子邮件模板的文件扩展名(或者,使用文件_扩展名)
cc=['fubar@example.com']\#获取django邮件后端连接,使用**django.core.mail.get_connection创建**
auth_user='username'覆盖django邮件后端使用的用户,根据**django.core.mail.send撸mail**
验证密码='password'覆盖django邮件后端使用的密码,根据**django.core.mail.send棼mail**






发布此包的新版本:
=======



更新更改日志文件。

执行以下命令::

python setup.py publish
git push origin master--标记




商业支持
====


此库与其他库一样,用于vinta客户端的项目中。我们一直在寻找令人兴奋的工作,因此如果您需要任何商业支持,请随时联系:contact@vinta.com.br





_ django:http://djangoproject.com
| gitterbadge图片::https://badges.gitter.im/vintasoftware/django templated email.svg
…_ GitterBadge:https://gitter.im/vintasoftware/django-templated-email?联合技术手册来源=徽章和联合技术手册媒介=徽章和联合技术手册活动=公关徽章和联合技术手册内容=徽章
…| travisbadge图片:https://travis-ci.org/vintasoftware/django-templated-email.svg?分支=发展
…_ travisbadge:https://travis ci.org/vintasoftware/django模板电子邮件
…|工作服徽章图片::https://covertalls.io/repos/github/vintasoftware/django-templated-email/badge.svg?分支=发展
…_工作服徽章:https://coveralls.io/github/vintasoftware/django-templated-email?分支=发展
…| pypiversionbadge图像::https://img.shields.io/pypi/v/django模板电子邮件.svg
…_ PyPiversionBadge:https://pypi.python.org/pypi/django模板电子邮件
…| pythonversionsBadge image::https://img.shields.io/pypi/pyversions/django templated email.svg
。_ PythonversionsBadge:https://pypi.python.org/pypi/django模板电子邮件
…|许可证徽章图像::https://img.shields.io/pypi/l/django模板电子邮件.svg
…_许可证:https://github.com/vintasoftware/django-templated-email/blob/develop/license

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

推荐PyPI第三方库


热门话题
java如何将UDP消息从桌面发送到移动设备?   java DefaultMessageListenerContainer使用JMX+ActiveMQ在单个队列上管理多个使用者   java CMU Sphinx:Voxforge德国型号不精确   java生成一个定制的lastIndexOf方法   java生成pdf PDFBox无头docker容器失败   java实例化HashMap中存储的类的实例   java将JAAS表单身份验证传递给REST服务   爪哇:Tomcat。伊奥。IOException:无法创建目标“xxx”目录“   java GoogleTokenResponse未执行。。!   java Lastmodified标头在第二次刷新后不工作   java Android onClickListener没有注册点击(我想)   当引导调用远程模式时,不会加载java Google reCaptcha   java将二进制字符串转换为字节数组   java为JPA本机查询的结果分配ID的最简单方法是什么?   java上的数组参数行为   组织中的java字段数据源。O7计划。关于公司。MainController需要“javax”类型的bean。sql。找不到“数据源”   java如何使用selenium在excel文件中查找字符串的位置   java Hibernate注释。如何注释?   在Java中反转字符串时出错