使向用户发送电子邮件变得简单且基于实体。

django-entity-emailer的Python项目详细描述


django实体电子邮件发送程序

你:

  • 使用django实体事件?
  • 要将电子邮件作为实体事件的另一种媒介吗?
  • 想要电子邮件发送记录吗?
  • 想要自动保证你不会意外地发送数百个 几分钟的邮件?

然后使用django实体电子邮件!

安装

当前可以通过下载和安装来安装此软件包 来源:

< Buff行情> Git克隆 python setup.py安装

即将推出: pip安装

设置和配置

为了使用django实体emailer,您必须镜像实体 使用django实体 框架。 此外,为了向实体发送电子邮件, 实体必须在其 实体元 字段。

如果这两个条件均为真,则设置相当简单:

  1. 将实体电子邮件添加到已安装的应用程序
  2. 设置 设置的值。来自电子邮件的实体电子邮件,或者 确保 设置.default_from_email 设置为 适当的值。
  3. 确保所有依赖项都已安装并在已安装的应用程序中列出
  4. pip: django db mutex ,已安装的应用程序: db mutex
  5. pip: django实体订阅 ,已安装的应用程序: 实体订阅
  6. 将计划好的电子邮件任务添加到您的"芹菜节拍"计划中(请参见 配置芹菜部分)。
  7. 运行python manage.py syncdb和python manage.py migrate
  8. 确保通过运行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行情>
      < DL>
      emailtemplate 模型上添加了一个 上下文加载程序 字段。此功能允许用户提供功能
      从存储的 电子邮件 上下文获取和返回数据的路径。
    • 添加了基本的电子邮件视图和URL,用于通过django视图呈现电子邮件。
  • 0.4

    < Buff行情>
      < DL>
      更新为使用 EntityKind 模型而不是 ContentType 模型指定实体组。
      在添加新的 子实体类型时删除旧的 子实体类型字段的模式迁移 添加了字段,以便用户可以进行适当的数据迁移。请注意,这取决于 用户编写适当的数据迁移,以便将实体类型转换为实体类型。

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

推荐PyPI第三方库


热门话题
java为textview创建选定状态(突出显示)   Java Hibernate计数行   Java语言中的字符串比较   java为什么SparkLauncher会立即返回而不会生成任何作业?   java layout_centerInParent在抛出回收视图后不工作   c#中的readInt16()与java中的readShort()   java如何在工具栏菜单中添加昼夜切换器   java在eclipse上向Tomcat提供<Realm/>信息   java使用给定的随机路径构造一个图   带有对象推送的java Morphia聚合阶段组   java关闭JTable实例   性能如何更好地转换java中的所有集合元素?   JAVA木卫一。IOException:通过Eclipse读取Java中的EOF Lucene   java如何在Android中将光标设置在tableLayout的行/列中所需的位置   使用HashMap的Set的java迭代器不会生成值/键吗?   java google guava cachebuilder在ExipeAfterAccess和expireActerWrite之间使用的时间更长   如何将这个排序映射方法从java转换为Kotlin   java如何从运行的JAR文件中读取war目录?   SpringBootJava。使用Java 9模块(JPM)时lang.NoSuchMethodError