跳转到主要内容

Websauna的邮件订阅插件

项目描述

这是Websauna框架的邮件订阅插件。它旨在从网站内容自动生成邮件订阅。

Supported Python versions

Latest Version

ci

License

https://websauna.org/theme/images/logo-768.png

特性

  • 从网站内容自动生成邮件订阅

  • 新闻预览和发送的管理员界面

  • 导入所有网站用户作为新闻订阅者

  • 通过Mailgun发送外部电子邮件

  • 通过Mailgun管理退订

  • 基于Redis的新闻状态管理(例如最后一次发出信件等)

  • 使用Websauna的基于Celery的任务子系统异步运行长时间运行的操作

安装

要运行此软件包,您需要Python 3.4+、PostgreSQL和Redis。

您需要提供自己的特定于站点的INewsletter实现,该实现填充新闻内容。

安装Python包

使用pip安装此软件包。

设置邮件渲染器

您需要注册一个特定于站点的新闻订阅,该订阅负责渲染新闻邮件HTML负载。在您的Initializer.configure_views中执行此操作。示例

# Configure newsletter renderer
from mysite.views.newsletter import NewsletterRenderer
from websauna.newsletter.interfaces import INewsletterGenerator
registry = self.config.registry
registry.registerAdapter(factory=NewsletterRenderer, required=(IRequest,), provided=INewsletterGenerator)

有关更多信息,请参阅demo.py

设置秘密

myapp/conf/development-secrets.ini中添加Mailgun API密钥等。

示例

[mailgun]
# Get from Mailgun
api_key = x

# What is the mailing list we use in the test suite
mailing_list = unit-testing@mailgun.websauna.org

# Outbound domain used for the newslettering
domain = mailgun.websauna.org

# From: email we use to send the newsletter
from = MyApp Newsletter <newsletter-demo@websauna.org>

创建Mailgun邮件列表对象

最简单的方法是通过使用生产配置的ws-shell来完成此操作

ws-shell tokenmarket/conf/production.ini

然后使用%cpaste笔记本shell命令

from websauna.system.core.utils import get_secrets
from websauna.newsletter.mailgun import Mailgun
secrets = get_secrets(request.registry)
list_address = secrets["mailgun.mailing_list"]
mailgun = Mailgun(request.registry)
mailgun.create_list(list_address, "MyApp newsletter")

您会收到回复

{'list': {'access_level': 'readonly',
  'address': 'newsletter@example.com',
  'created_at': 'Wed, 25 Jan 2017 17:08:56 -0000',
  'description': 'TokenMarket newsletter',
  'members_count': 0,
  'name': ''},
 'message': 'Mailing list has been created'}

集成您的网站的订阅

该软件包提供了一个基于Boostrap的迷你订阅表单。它非常适合例如放置在网站页脚中。

只需在模板中做

<h3>Follow</h3>
{% include "newsletter/subscription_form.html" %}

有关更多信息,请运行演示并查看demotemplates/site/footer.html

使用方法

发送和预览

访问管理员界面中的新闻标签以预览和发送新闻邮件。

重置新闻收集日期

您可以从shell手动设置新闻状态,例如最后一次发送新闻邮件的时间

import datetime
from websauna.newsletter.state import NewsletterState

state = NewsletterState(request)
state.set_last_send_timestamp(datetime.datetime(2016, 12, 24).replace(tzinfo=datetime.timezone.utc))

状态在Redis中管理。

导出订阅者

在控制台

from websauna.system.core.utils import get_secrets
from websauna.newsletter.mailgun import Mailgun
secrets = get_secrets(request.registry)
list_address = secrets["mailgun.mailing_list"]
mailgun = Mailgun(request.registry)
print(mailgun.list_members(list_address))  # TODO: pagination

导入电子邮件订阅者

请注意,在管理员界面中支持导入网站用户。

示例

subscribers = """
mikko@example.com
pete@example.com
"""

from websauna.system.core.utils import get_secrets
from websauna.newsletter.mailgun import Mailgun
from websauna.newsletter.views import subscribe_email

secrets = get_secrets(request.registry)
list_address = secrets["mailgun.mailing_list"]
mailgun = Mailgun(request.registry)

for s in subscribers.split():
    s = s.strip()
    if s:
        subscribe_email(request, s)

本地开发模式

您可以在本地开发此插件。

激活您的Websauna应用程序的虚拟环境。

然后

cd newsletter  # This is the folder with setup.py file
pip install -e .
psql create newsletter_dev
ws-sync-db  ws://websauna/newsletter/conf/development.ini
pserve  ws://websauna/newsletter/conf/development.ini --reload

运行测试套件

首先创建测试数据库

# Create database used for unit testing
psql create newsletter_test

安装测试和开发依赖项(在具有setup.py的文件夹中运行)

pip install -e ".[dev,test]"

使用py.test运行测试套件

py.test

使用Celery手动测试

确保在development.ini中Celery不是贪婪的

websauna.celery_config =
    {
        "broker_url":  "redis://127.0.0.1:6379/15",
        "task_always_eager": False,
    }

启动演示(终端1)

pserve ws://websauna/newsletter/conf/development.ini

启动Celery(终端2)

ws-celery  ws://websauna/newsletter/conf/development.ini -- worker

待办事项

  • 双确认邮件列表订阅

更多信息

请参阅https://websauna.org/

Websauna Newsletter的变更日志

1.0a3 (2018-10-03)

  • 订阅后,将用户重定向回原始URL。

  • 支持Python 3.7。

1.0a2 (2018-04-22)

  • 修复缺失的“namespace_packages”。

1.0a1 (2018-03-06)

  • 初始版本

项目详细信息


下载文件

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

源分发

websauna.newsletter-1.0a3.tar.gz (34.9 kB 查看散列)

上传时间

构建分发

websauna.newsletter-1.0a3-py3-none-any.whl (35.7 kB 查看散列值)

上传时间 Python 3

由以下支持