2009-11-27 14 views
6

Esiste un plug-in esistente per la produzione di e-mail giornaliere o settimanali in Django? (Vogliamo combinare molte piccole notifiche in una sola e-mail, piuttosto che infastidire le persone in continuazione.)Digestione email Django

Django-mailer afferma di supportare questo, ma mi è stato detto che non è così.

+0

appartiene a superutente? – falstro

+0

Perché, Django non è roba di livello utente. Questo è il codice. –

+0

sì, sto solo pensando, forse si tratta di usare il codice, piuttosto che modificarlo. Solo per chiedere. – falstro

risposta

4

C'è l'app django-mailer di cui non ero a conoscenza fino ad ora, quindi la risposta sotto specifica il mio approccio.

Il caso più semplice, non richiede molto:

mettere questo nella tua app/management/commands/send_email_alerts.py, quindi impostare un lavoro cron per eseguire questo comando una volta alla settimana con python manage.py send_email_alerts (tutti i percorsi devono essere impostati in un ambiente, naturalmente, per manage.py per raccogliere le impostazioni dell'app)

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() 

Ma se hai bisogno di tenere traccia di quello di e-mail ogni utente e ogni quanto tempo, sarà necessario un po 'di codice aggiuntivo. Ecco un homegrown example. Forse è lì che il django-mailer può colmare le lacune.

3

Ho appena rilasciato il pacchetto django-digested in PyPI. Supporta notifiche istantanee, riassunti giornalieri e settimanali e preferenze individuali per diversi gruppi di aggiornamenti.