Websauna的邮件订阅插件
项目描述
这是Websauna框架的邮件订阅插件。它旨在从网站内容自动生成邮件订阅。
特性
从网站内容自动生成邮件订阅
新闻预览和发送的管理员界面
导入所有网站用户作为新闻订阅者
通过Mailgun发送外部电子邮件
通过Mailgun管理退订
基于Redis的新闻状态管理(例如最后一次发出信件等)
使用Websauna的基于Celery的任务子系统异步运行长时间运行的操作
安装
要运行此软件包,您需要Python 3.4+、PostgreSQL和Redis。
您需要提供自己的特定于站点的INewsletter实现,该实现填充新闻内容。
安装Python包
使用pip安装此软件包。
取消订阅链接
在您的渲染器HTML代码中,您可以使用Mailgun退订管理
<p class="details">
{# For Mailgun #}
<a href="%mailing_list_unsubscribe_url%">Unsubscribe from TokenMarket newsletter.</a>
</p>
设置秘密
在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
待办事项
双确认邮件列表订阅
更多信息
项目详细信息
websauna.newsletter-1.0a3.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 83f871d82506ddda66fcf46bd687ae57c233bd66dc9281482ce7963dbcad782b |
|
MD5 | 4261cc03780e6108a7522c88c47b4ef0 |
|
BLAKE2b-256 | e667d4801fadfaec6ee85b8bd03c274607f2f78c09d385b4bd793cef3bd0457e |
websauna.newsletter-1.0a3-py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 6bb8df431bcf1301102f00b80232f1d2397861a00a119406115696741058ead6 |
|
MD5 | db630a393c5f48bc3c8a4c0de4f77043 |
|
BLAKE2b-256 | e2df760bbde4f76de8b9b8ab4bc1441a6830eb213eebf136fb5ea472872bdd15 |