一个用于通过电子邮件向联系名单发送新闻通讯的Django应用程序。
项目描述
问题在于
如何将联系数据库与邮件列表结合起来,并通过Django发送新闻通讯?
假设我们有一个包含某种类型配置文件或类似django.contrib.auth的应用程序,并且您想向他们发送新闻通讯并跟踪活动。
功能
与其长篇大论,以下是主要功能的列表
与其他Django模型结合的能力。
可以在新闻通讯模板中使用变量。
邮件列表管理(合并、导入...)。
VCard 3.0格式的联系信息导入/导出。
可配置的SMTP服务器,具有流量限制管理。
工作组。
可以发送新闻通讯预览。
订阅和退订邮件列表。
新闻通讯中的附件。
为每个用户提供唯一的URL。
跟踪统计。
架构
在应用程序架构层面,我们可以看到需要解释的两个原创性。
内容类型
内容类型应用程序用于将任何联系人模型实例链接到另一个模型实例。这允许您创建与不同应用程序相关联的不同类型的联系人,并随时检索关联。
如果某些信息位于链接的模型实例中,这特别有用。
定时任务/命令
直到您运行send_newsletter命令,emencia.django.newsletter应用程序将不会向网站中注册的新闻通讯发送。
$ python manage.py send_newsletter
此命令将启动根据新闻通讯SMTP服务器的信用额度需要启动的新闻通讯。这意味着并非所有新闻通讯都会在命令结束时发送,因为如果您使用公共SMTP服务器,在达到发送限制时可能会暂时被禁止。为了避免被禁止,所有新闻通讯不会同时和立即发送。
因此,建议每小时创建一个cronjob来启动此命令。
安装
您可以从http://github.com/Fantomas42/emencia-django-newsletter获取最新资源,并运行安装脚本
$ python setup.py install
或使用pip
$ pip install -e git://github.com/Fantomas42/emencia-django-newsletter.git#egg=emencia.django.newsletter
对于最新稳定版本,请使用easy_install
$ easy_install emencia.django.newsletter
应用程序
然后在项目的设置中的INSTALLED_APPS部分注册emencia.django.newsletter、admin、contenttypes和tagging。
INSTALLED_APPS = ( # Your favorites apps 'django.contrib.contenttypes', 'django.contrib.admin', 'tagging', 'emencia.django.newsletter',)
模板上下文处理器
如果您还没有,请添加以下模板上下文处理器。
TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.auth', 'django.core.context_processors.i18n', 'django.core.context_processors.request', 'django.core.context_processors.media', 'emencia.django.newsletter.context_processors.media',)
URLs
在您的项目urls.py中,添加以下行以包含新闻通讯的urls,以便在HTML中提供新闻通讯。
url(r'^newsletters/', include('emencia.django.newsletter.urls')),
请注意,此urlset提供方便使用,但您可以自定义urls。
url(r'^newsletters/', include('emencia.django.newsletter.urls.newsletter')), url(r'^mailing/', include('emencia.django.newsletter.urls.mailing_list')), url(r'^tracking/', include('emencia.django.newsletter.urls.tracking')), url(r'^statistics/', include('emencia.django.newsletter.urls.statistics')),
媒体文件
您必须从emencia/django/newsletter/media/目录到您的媒体目录创建一个符号链接或创建一个名为edn的副本,但如果要更改此值,请根据需要定义settings.py中的NEWSLETTER_MEDIA_URL。
别忘了提供这个url。
同步
现在,您可以运行一个syncdb来将模型安装到您的数据库中。
数据库管理系统考虑事项
不推荐在生产中使用SQLite。因为SQL查询限制为999个变量,您无法在Django的admin模块中创建超过此限制的邮件列表。建议使用MySQL或PgSQL。
开发
提供了一个Buildout脚本,以正确初始化任何想要贡献的项目。
首先,请使用VirtualEnv来保护您的系统。
按照以下步骤开始开发
$ git clone git://github.com/Fantomas42/emencia-django-newsletter.git $ virtualenv --no-site-packages emencia-django-newsletter $ cd emencia-django-newsletter $ source ./bin/activate $ python bootstrap.py $ ./bin/buildout
构建脚本将解决开发应用程序所需的所有依赖项。
完成这些操作后,您就可以开始开发项目了。
运行此命令以启动测试。
$ ./bin/test
很简单,不是吗?
数据库表示
变更日志
0.1dev(未发布)
初始发布
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
emencia.django.newsletter-0.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 759109fbe36b88eaf78c2d54ced89d9d174f1c0b434e81041c61a7f9fd0b7f53 |
|
MD5 | 6c2693d8b245bb8cb2d36b06a95160b1 |
|
BLAKE2b-256 | fae13770331e8dac02c65f96d42be24f035b6e78557dc993c1b5304d12d37f8b |