diff --git a/djangoldp_notification/models.py b/djangoldp_notification/models.py index 24e331bc611e781604b72f022c03853780c8a739..8cd41188a7509fe2190e05a22444440e9cde1567 100644 --- a/djangoldp_notification/models.py +++ b/djangoldp_notification/models.py @@ -16,6 +16,8 @@ from djangoldp.fields import LDPUrlField from djangoldp.models import Model from djangoldp.permissions import InboxPermissions +from django.template import loader + class Notification(Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='inbox', on_delete=models.deletion.CASCADE) @@ -72,5 +74,22 @@ def send_request(target, object_iri): @receiver(post_save, sender=Notification) def send_email_on_notification(sender, instance, **kwargs): - send_mail('Notification on staging.happy-dev.fr', instance.summary, 'from@example.com', [instance.user.email], - fail_silently=True) + if instance.summary and settings.JABBER_DEFAULT_HOST and instance.user.email: + html_message = loader.render_to_string( + 'email.html', + { + 'on': settings.JABBER_DEFAULT_HOST, + 'instance': instance, + 'author': requests.get(instance.author).json()['name'] or 'Unknown user' + } + ) + send_mail( + 'Notification on ' + settings.JABBER_DEFAULT_HOST, + instance.summary, + settings.EMAIL_HOST_USER or "noreply@" + settings.JABBER_DEFAULT_HOST, + [instance.user.email], + fail_silently=False, + html_message=html_message + ) + else: + raise Exception('Misconfiguration, missing JABBER_DEFAULT_HOST or incomplete instance') diff --git a/djangoldp_notification/templates/email.html b/djangoldp_notification/templates/email.html new file mode 100644 index 0000000000000000000000000000000000000000..2907e39c7ce4f863ec68b8850fed68273ff854e2 --- /dev/null +++ b/djangoldp_notification/templates/email.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<html> + <head> + </head> + <body> + <div> + <p style='font-style:italic;color:#777'>A new {{ instance.type }} from <b>{{ author }}</b> on {{ on }}</p> + <p>{{ instance.summary }}</p> + </div> + <div style='margin-top:10px;'> + <p style='font-size:small;color:#777'> + -- + <br> + Do not reply to this email directly, go to <a href='http://{{ on }}' target='_blank'>http://{{ on }}</a> instead. + <br> + <a href='#'>Unsubscribe</a> + </p> + </div> + </body> +</html> \ No newline at end of file