comments: Mail bei neuem Kommentar

Veröffentlich am 18.02.2009, 21:53

Eines der Dinge, die ich in django.contrib.comments vermisse, ist eine E-Mail Benachrichtigung bei neuen Kommentaren. Nach etwas Suchen habe ich nur eine alte Variante aus dem Jahr 2006 gefunden.
Das nehme ich als Anlass, hier mal meine aktuelle - 1.0 kompatible - Umsetzung zu veröffentlichen.

Ich habe diesen Code einfach in die __init__.py meiner Blog App gespeichert (kann auch woanders gespeichert werden, hauptsache Django verarbeitet die Datei automatisch).

from django.contrib.comments.models import Comment
from django.contrib.sites.models import Site
from django.core.mail import mail_managers
from django.db.models import signals

def comment_notification(sender, instance, **kwargs):
    subject = 'New Comment on %s' % instance.content_object
    msg = 'http://%s%s\n\nComment:\n%s' % (
        Site.objects.get_current().domain,
        instance.content_object.get_absolute_url(),
        instance.comment
    )
    mail_managers(subject, msg, fail_silently=True)

signals.post_save.connect(comment_notification, sender=Comment)

Wichtig: MANAGERS in der settings.py korrekt konfigurieren, z.B.:

MANAGERS = (
    ('Webmaster', 'mail@example.com'),
)

Tags: comments, django, mail, signals

Weiterlesen, 13 Kommentar(e)