跳转到主要内容

一个用于通过电子邮件向联系人列表发送新闻通讯的Django应用。

项目描述

问题在于

如何将联系数据库与邮件列表结合,并通过Django发送新闻通讯?

想象一下,我们有一个包含某种类型配置文件的应用程序,例如 django.contrib.auth,并且您想要向他们发送新闻通讯并跟踪活动。

这个包是emencia-django-newsletter的分支,具有与django 1.6的兼容性以及其他自定义

功能

与其长篇大论,以下列出主要功能列表

  • 与其他Django模型耦合的能力。

  • 可以在新闻通讯模板中使用变量。

  • 邮件列表管理(合并、导入等)。

  • 在VCard 3.0中导入/导出联系人。

  • 可配置的SMTP服务器,具有流量限制管理。

  • 工作组。

  • 可以发送新闻通讯预览。

  • 订阅和取消订阅邮件列表。

  • 新闻通讯中的附件。

  • 为用户生成唯一的URL。

  • 跟踪统计。

架构

在应用程序架构层面,我们可以看到两个需要解释的原创性。

内容类型

内容类型应用用于将任何联系人模型实例链接到另一个模型实例。这允许您创建与不同应用程序关联的不同类型的联系人,并在任何时候检索关联。

如果某些信息位于关联的模型实例中,这将特别有用。

Cronjob/命令

直到您启动<强>发送新闻通讯命令,maja_newsletter应用程序永远不会发送网站上注册的新闻通讯。

$ python manage.py send_newsletter

此命令将根据新闻通讯SMTP服务器的信用额启动需要启动的新闻通讯。这意味着并非所有新闻通讯都会在命令结束时发送,因为如果您使用公共SMTP服务器,在达到发送限制时可能会暂时被禁止。为了避免被禁止,不会同时立即发送所有新闻通讯。

因此,建议每小时创建一个<强>cronjob来启动此命令。

安装

依赖关系

请确保在安装之前安装以下软件包

  • Django >= 1.2

  • html2text

  • BeautifulSoup

  • django-tagging

  • vobject

  • xlwt

  • xlrd

以下软件包是可选的,但方便在新闻通讯中渲染网页。

  • lxml

获取代码

您可以从http://github.com/nephila/django-maja-newsletter获取最新源代码并运行安装脚本

$ python setup.py install

或使用pip

$ pip install -e git://github.com/nephila/django-maja-newsletter.git#egg=maja_newsletter

对于最新稳定版本,使用easy_install

$ easy_install django-maja-newsletter

应用程序

然后,在项目的设置中注册<强>maja_newsletter、<强>admin、<强>contenttypes和<强>tagging

INSTALLED_APPS = (
  # Your favorites apps
  'django.contrib.contenttypes',
  'django.contrib.sites',
  'django.contrib.admin',
  'django.contrib.sessions',
  'tagging',
  'maja_newsletter',)

URLs

在项目的urls.py中添加以下行,以包含新闻通讯的urls,用于在HTML中提供服务。

url(r'^newsletters/', include('maja_newsletter.urls')),

请注意,此urlset是为了方便使用而提供的,但您可以根据需要自定义URL

url(r'^newsletters/', include('maja_newsletter.urls.newsletter')),
url(r'^mailing/', include('maja_newsletter.urls.mailing_list')),
url(r'^tracking/', include('maja_newsletter.urls.tracking')),
url(r'^statistics/', include('maja_newsletter.urls.statistics')),

媒体文件

您必须从maja_newsletter/media/edn/目录到您的媒体目录创建一个符号链接,或者创建一个名为<强>edn的副本。但是,如果您想更改此值,请定义settings.py中的NEWSLETTER_MEDIA_URL。

别忘了提供服务。

同步

现在,您可以运行一个syncdb来将模型安装到您的数据库中。

设置

您必须在设置中添加用于发送新闻通讯的电子邮件地址

NEWSLETTER_DEFAULT_HEADER_SENDER = 'My NewsLetter <newsletter@myhost.com>'

DBMS考虑事项

不推荐在生产中使用SQLite。因为SQLite对SQL查询中的变量有限制,为999个,您不能在Django的admin模块中创建超过此限制的邮件列表。建议使用MySQL或PgSQL。

如何使用TinyMCE编辑新闻通讯

对于最终用户来说,拥有一个WYSIWYG编辑器来创建新闻通讯可能很有用。WYSIWYG编辑器的选择是自由的,描述的方法可以应用于任何东西,但我们将重点关注TinyMCE,因为它具有许多功能和加载模板的有用插件。

首先,将django-tinymce应用程序安装到您的项目中。

完成以上步骤后,您可以享受乐趣了!

如何将您的配置文件应用程序与maja_newsletter关联

如果您想快速将联系人导入到邮件列表中,例如,您可以为您模型编写一个admin操作。

我们假设我们在名为<强>Profile的模型中有字段emailfirst_namelast_name

在其AdminModel定义中添加此方法并将其注册到actions属性中。

class ProfileAdmin(admin.ModelAdmin):

    def make_mailing_list(self, request, queryset):
        from maja_newsletter.models import Contact
        from maja_newsletter.models import MailingList

        subscribers = []
        for profile in queryset:
            contact, created = Contact.objects.get_or_create(email=profile.mail,
                                                             defaults={'first_name': profile.first_name,
                                                                       'last_name': profile.last_name,
                                                                       'content_object': profile})
            subscribers.append(contact)
        new_mailing = MailingList(name='New mailing list',
                                  description='New mailing list created from admin/profile')
        new_mailing.save()
        new_mailing.subscribers.add(*subscribers)
        new_mailing.save()
        self.message_user(request, '%s succesfully created.' % new_mailing)
    make_mailing_list.short_description = 'Create a mailing list'

    actions = ['make_mailing_list']

此操作将创建或检索所有需要的<强>联系人实例,用于创建邮件列表。

完成以上操作后,您可以向此邮件列表发送新闻通讯。

开发

提供了一个Buildout脚本,以便任何希望贡献的人正确初始化项目。

首先,请使用VirtualEnv来保护您的系统。

按照以下步骤开始开发

$ git clone git://github.com/nephila/django-maja-newsletter.git
$ virtualenv --no-site-packages maja_newsletter
$ cd maja_newsletter
$ source ./bin/activate
$ python bootstrap.py
$ ./bin/buildout

buildout脚本将解决开发应用程序所需的所有依赖项。

完成上述操作后,您就可以开始在这个项目上进行了。

运行此命令以启动测试。

$ ./bin/test

或者您也可以启动演示。

$ ./bin/demo syncdb
$ ./bin/demo runserver

很简单,不是吗?

数据库表示

https://github.com/nephila/django-maja-newsletter/raw/master/docs/graph_model.png

变更日志

0.3

  • 使用 UTM 标签

  • 包内的演示

  • 改进导入功能

  • HTML 页面的 Premailer。

  • 新的导入功能

  • 与 django 1.3.1 兼容

  • 新闻通讯标题的唯一键变量

  • 许多错误修复

0.2

  • django-cms 插件

  • 多种导入格式

  • 与 django 1.2 兼容

  • 许多错误修复

0.1dev (未发布)

  • 初始发布

项目详情


下载文件

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

源分布

django-maja-newsletter-0.6.0.tar.gz (580.8 kB 查看散列)

上传时间

构建分布

django_maja_newsletter-0.6.0-py2-none-any.whl (563.3 kB 查看散列)

上传时间 Python 2

由以下组织支持