电子邮件与芹菜异步通知。
async_notifications的Python项目详细描述
异步通知
带有芹菜和管理视图的电子邮件通知,用于发送带有延迟的电子邮件,例如每天
功能
- 芹菜集成
- 管理视图
- 将邮件系统排队并立即发送
- 问题通知
- 用户筛选电子邮件
- 具有模板上下文的模板系统
- 发送给用户、组或外部电子邮件
- django cms集成(djcms_async_notifications)和独立。
- 自定义文本区域小部件支持
- 允许发送组邮件列表(如果已定义)。
安装
从PIP安装
$ pip install async_notifications
在您的设置中添加所需的应用**
INSTALLED_APPS=[...'ajax_select','async_notifications']
在url.py中添加ajax\u select url
fromdjango.conf.urlsimporturl,includefromajax_selectimporturlsasajax_select_urlsurlpatterns=[...url(r'^ajax_select/',include(ajax_select_urls)),]
设置指向项目芹菜文件的celeriry_module非常重要,因为将任务分配给当前项目和配置一些默认芹菜选项需要它
# settings.pyCELERY_MODULE="demo.celery"CELERY_TIMEZONE=TIME_ZONECELERY_ACCEPT_CONTENT=['pickle','json']
配置电子邮件设置,例如用于开发
DEFAULT_FROM_EMAIL="mail@example.com"EMAIL_HOST="localhost"EMAIL_PORT="1025"
#从demo复制项目文件夹中的芹菜应用程序,并调整crontab的执行
# celery.pyapp.conf.CELERYBEAT_SCHEDULE={# execute 12:30 pm'send_daily_emails':{'task':'async_notifications.tasks.send_daily','schedule':crontab(minute=30,hour=0),},}
记住使用demo/\u init\uuu.py更新项目文件夹/\u init\uu.py。
运行迁移
$ python manage.py migrate
运行项目
您需要运行3个子系统才能运行此应用程序,因此需要3个xterm,对于此说明,我将使用演示项目
运行SMTP调试客户端
$ python -m smtpd -n -c DebuggingServer localhost:1025
运行芹菜,如果你还没有设置芹菜看到celery documentation。
$ celery -A demo worker -l info -B
运行django
$ python manage.py runserver
用法
报告上下文模板
fromasync_notifications.registerimportupdate_template_contextcontext=[('fieldname','Field description'),('fieldname2','Field description'),...]update_template_context("yourcode",'your email subject',context)
如果找不到,此自动创建电子邮件模板。
context是一个元组列表,其中包含模板上下文中可用的字段,此上下文添加在同一文件中 从模板发送电子邮件
发送电子邮件:)
send_email_from_template(code,recipient,context={},enqueued=True,user=None,upfile=None)
参数说明:
- 收件人是电子邮件列表
- 代码与更新模板上下文中的代码寄存器相同
- 已排队如果false立即发送电子邮件,否则将在发送电子邮件任务运行时排队等待发送。
- 用户用户如何发送电子邮件
- upfile电子邮件中的附加文件
其他可选选项
添加上下文虚拟对象
当需要根据模板传递默认模板消息,但没有模板对象时 还需要用Django模板SnToCaseTo编写对象,可以使用DimMyTraceToBube 总是返回类似{{myobj.attr1.objattr}}
fromasync_notifications.registerimportupdate_template_context,DummyContextObjectcontext=[('myobj','Field description'),...]message=render_to_string('some/template.html',context={'myobj':DummyContextObject('myobj')})update_template_context("yourcode",'your email subject',context,message=message)
Django CMS集成
此配置可以帮助您与django cms集成。
包括在已安装的应用程序中
INSTALLED_APPS=[...'async_notifications','async_notifications.djcms_async_notifications',]
配置模型和字段异步通知的使用方式,ej。奥尔德林人
ASYNC_NOTIFICATION_GROUP='aldryn_people.Group'ASYNC_NOTIFICATION_GROUP_LOOKUP_FIELDS={'order_by':'translations__name','email':'email','group_lookup':'translations__name','display':'name','filter':['translations__name__icontains']}ASYNC_NOTIFICATION_USER='aldryn_people.Person'ASYNC_NOTIFICATION_USER_LOOKUP_FIELDS={'order_by':'translations__name','display':'name','filter':['user__first_name__icontains','user__last_name__icontains','translations__name__icontains'],'group_lookup':'groups__translations__name'}
注意
默认情况下使用django auth
cmsplugin contact plus
contact_plus_send_method='异步通知。DJCMS_异步通知。contact_plus。发送电子邮件' 异步通知联系人电子邮件='电子邮件'
注意
这需要特殊的cmsplugin contact plus版本,我们发送了一个prs,但尚未合并。