Django электронный дайджест - PullRequest
6 голосов
/ 27 ноября 2009

Существует ли в Django существующий плагин для ежедневных или еженедельных дайджест-писем? (Мы хотим объединить множество небольших уведомлений в одном письме, а не беспокоить людей постоянно.)

Django-mailer утверждает, что поддерживает это, но мне сказали, что на самом деле это не так.

Ответы [ 2 ]

4 голосов
/ 28 ноября 2009

Существует django-mailer приложение, о котором я не знал до сих пор, поэтому ответ ниже описывает мой собственный подход.

Самый простой случай не потребует много:

вставьте это в ваш app/management/commands/send_email_alerts.py, затем настройте задание cron для запуска этой команды один раз в неделю с python manage.py send_email_alerts (конечно, все пути должны быть установлены в среде, чтобы manage.py мог подобрать настройки вашего приложения)

from django.core.management.base import NoArgsCommand
from django.db import connection
from django.core.mail import EmailMessage

class Command(NoArgsCommand):
    def handle_noargs(self,**options):
        try:
            self.send_email_alerts()
        except Exception, e:
            print e
        finally:
            connection.close()

    def send_email_alerts(self):         
        for user in User.objects.all():
            text = 'Hi %s, here the news' % user.username
            subject = 'some subject'
            msg = EmailMessage(subject, text, settings.DEFAULT_FROM_EMAIL, [user.email])
            msg.send()

Но если вам нужно будет отслеживать, что отправлять каждому пользователю по электронной почте и как часто, потребуется дополнительный код. Вот доморощенный пример . Может быть, именно здесь django-mailer может заполнить пробелы.

3 голосов
/ 09 февраля 2012

Я только что выпустил django-переваренный пакет для PyPI. Он поддерживает мгновенные уведомления, ежедневные и еженедельные дайджесты и индивидуальные настройки для разных групп обновлений.

...