使向用户发送电子邮件变得简单且基于实体。
django-entity-emailer的Python项目详细描述
django实体电子邮件发送程序
你:
- 使用django实体事件?
- 要将电子邮件作为实体事件的另一种媒介吗?
- 想要电子邮件发送记录吗?
- 想要自动保证你不会意外地发送数百个 几分钟的邮件?
然后使用django实体电子邮件!
安装
当前可以通过下载和安装来安装此软件包 来源:
< Buff行情> Git克隆 python setup.py安装即将推出: pip安装
设置和配置
为了使用django实体emailer,您必须镜像实体 使用django实体 框架。 此外,为了向实体发送电子邮件, 实体必须在其 实体元 字段。
如果这两个条件均为真,则设置相当简单:
- 将实体电子邮件添加到已安装的应用程序
- 设置 设置的值。来自电子邮件的实体电子邮件,或者 确保 设置.default_from_email 设置为 适当的值。
- 确保所有依赖项都已安装并在已安装的应用程序中列出
- pip: django db mutex ,已安装的应用程序: db mutex
- pip: django实体订阅 ,已安装的应用程序: 实体订阅
- 将计划好的电子邮件任务添加到您的"芹菜节拍"计划中(请参见 配置芹菜部分)。
- 运行python manage.py syncdb和python manage.py migrate
- 确保通过运行python manage.py设置电子邮件介质 添加电子邮件媒介
发送电子邮件时,django实体电子邮件程序将首先检查 来自电子邮件的实体电子邮件存在。如果是,它将使用该值 在电子邮件的"发件人"字段中,否则将返回值 在电子邮件中设置默认值
最后,django entity emailer是一种可安装的介质,用于 django实体事件 。这个库使开发人员和 用户管理用户通过各种 介质。但是,它确实需要一些配置。对于一个简单的电子邮件配置, 请参阅"基本实体订阅配置"部分。
将 'email' 转换成 'entity\u meta'
在 他们的"实体元"并不困难。
在安装django实体之后,它就和创建模型一样简单 从 实体.baseEntityModel继承,带有 获取实体元 它返回电子邮件以及要镜像的任何其他数据。一 简单的例子可以是:
fromdjango.dbimportmodelsfromentityimportBaseEntityModelclassAccount(BaseEntityModel)username=models.CharField(max_length=64)email=models.CharField(max_length=254)defget_entity_meta(self):return{'email':self.email,'username':self.username}
还要注意,并非每个镜像实体都必须 包括一封电子邮件,只有那些实际将被发送的实体 电子邮件需要在其 实体中镜像电子邮件
有关实体镜像工作原理的更完整描述,请参见 Django实体的文档。
基本实体事件配置
以确保您网站的用户不会收到电子邮件 他们不想收到,实体电子邮件应用程序连接 在 实体事件框架中。作为一个开发者 您可以公开用户的订阅和取消订阅功能 电子邮件。在这里,我们将展示启动所需的基本配置 发送电子邮件。
运行manage.py add_email_medium将添加 实体电子邮件程序依赖于发送电子邮件。我们还必须有 电子邮件,以及订阅电子邮件和源代码的组合。
fromentity_emailerimportget_mediumfromentity_event.modelsimportSource,Subscriptionfromentity.modelsimportEntity,EntityKindsuper_entity=Entity.objects.get_for_obj(my_group_object)user_entity_kind=EntityKind.objects.get(name='myusermodel')email_medium=get_medium()admin_source=Source.objects.create(name='admin',display_name='Admin Notifications',description='Important notifications for the site Admin.',)Subscription.objects.create(source=admin_source,medium=email_medium,entity=super_entity,subentity_kind=user_entity_kind)
除此之外,您还需要将电子邮件介质与 renderingstyle 实体事件中的对象,以便它可以执行电子邮件 致使。下一节将详细介绍这一点。
django实体emailer必须知道实体的电子邮件地址,并假设 默认情况下,电子邮件地址已在实体元数据中镜像。默认情况下 使用"email"元数据键,但可以通过设置 设置中的实体电子邮件程序电子邮件键 。
django实体emailer还可以从任何时候排除某些实体 正在通过电子邮件发送。为此,镜像元数据,当 none 或 false 意味着实体永远不应该通过电子邮件发送。然后设置 实体电子邮件程序排除键 设置此元数据的键。
发送有关活动的电子邮件
发送电子邮件就像将事件保存到数据库一样简单 以及在为 电子邮件。实体电子邮件将通过 事件,向订阅的目标发送电子邮件,并标记 所看到的事件,以便从不发送重复的电子邮件。
例如,假设我们希望在用户 登录到站点。假设电子邮件介质和管理源已设置 从前面的例子中,我们可以创建一个电子邮件模板(login.html),它看起来像 以下内容:
{{user}}justloggedin!
然后,我们为这个模板设置一个呈现样式和一个上下文呈现程序,以便 可以呈现电子邮件:
fromentity_event.modelsimportRenderingStyle,ContextRendererstyle=RenderingStyle.objects.create(name='email')ContextRenderer.objects.create(rendering_style=style,source=admin_source,html_template_path='templates/login.html',)
当上下文呈现器就位时,需要更新电子邮件介质以指向 以我们想要使用的适当渲染样式。继续我们的示例:
email_medium.rendering_style=styleemail_medium.save()
设置好渲染样式后,假设使用以下上下文创建事件:
{'user':'User name'}
发生这种情况时,会向订阅的用户发送一封电子邮件,上面写着"用户名刚刚登录!"
此电子邮件的主题行将使用呈现的电子邮件模板的前40个字符。然而, 如果在模板中指定了<;title>;HTML标记,则标记的内容将用作 电子邮件主题。
有关事件呈现的更多详细信息,请签出django entity event
取消订阅
用户可能希望能够取消订阅某些类型的 电子邮件。这在django实体emailer中很简单。电子邮件可以是 通过使用 实体订阅框架。
fromentity_emailerimportget_mediumfromentity_eventimportSource,Unsubscribeadmin_emails=Source.objects.get(name='admin')Unsubscribe.objects.create(entity=entity_of_user_to_unsub,source=admin_emailsmedium=get_medium())
此用户将被排除在接收此类电子邮件的范围之外 它们是单独发送给他们的,或作为群电子邮件的一部分发送的。
在浏览器中显示电子邮件
用户可以使用此应用程序在浏览器中查看电子邮件。这是通过包括 实体电子邮件程序将url发送到django项目中,并提供电子邮件的 视图uid 作为url参数。 URL视图将使用电子邮件的文本/HTML模板将其呈现为网页。
发行说明
0.9.0
< Buff行情>- 增加了django 1.8支持,减少了1.6支持
0.8.4
< Buff行情>- 添加了重写实体元数据中的电子邮件密钥的功能。
- 增加了根据元数据键排除实体被发送电子邮件的功能。
0.8.1
< Buff行情>- 添加了django 1.7支持
- 添加了Python3.4支持
0.7.1
< Buff行情>- 压缩实体电子邮件程序迁移并删除实体订阅依赖项。
0.7
< Buff行情>- 已将实体电子邮件程序转换为实体事件的唯一媒体。
0.6
< Buff行情>- 在 电子邮件 模型中添加了一个 收件人 字段,并删除了 发送到 字段。这允许用户
- 为电子邮件提供多个收件人(或一组收件人)。
< DL> 0.5
< Buff行情>- 在 emailtemplate 模型上添加了一个 上下文加载程序 字段。此功能允许用户提供功能
- 从存储的 电子邮件 上下文获取和返回数据的路径。
- 添加了基本的电子邮件视图和URL,用于通过django视图呈现电子邮件。
< DL> 0.4
< Buff行情>- 更新为使用 EntityKind 模型而不是 ContentType 模型指定实体组。
- 在添加新的 子实体类型时删除旧的 子实体类型字段的模式迁移 添加了字段,以便用户可以进行适当的数据迁移。请注意,这取决于 用户编写适当的数据迁移,以便将实体类型转换为实体类型。
< DL>