From 32e361151fda272a736bd358fa4c35057a83cc66 Mon Sep 17 00:00:00 2001 From: Christian Merten Date: Mon, 2 Dec 2024 22:49:49 +0100 Subject: [PATCH] mailer: set name in sender and reply to --- jdav_web/jdav_web/settings/components/emails.py | 1 + jdav_web/mailer/mailutils.py | 6 ++++++ jdav_web/mailer/models.py | 13 ++++++++----- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/jdav_web/jdav_web/settings/components/emails.py b/jdav_web/jdav_web/settings/components/emails.py index a1b7a92..a93ec23 100644 --- a/jdav_web/jdav_web/settings/components/emails.py +++ b/jdav_web/jdav_web/settings/components/emails.py @@ -14,3 +14,4 @@ CELERY_EMAIL_TASK_CONFIG = { } DEFAULT_SENDING_MAIL = os.environ.get('EMAIL_SENDING_ADDRESS', 'django@localhost') +DEFAULT_SENDING_NAME = os.environ.get('EMAIL_SENDING_NAME', 'Kompass') diff --git a/jdav_web/mailer/mailutils.py b/jdav_web/mailer/mailutils.py index 0da9b09..b2fe2d9 100644 --- a/jdav_web/mailer/mailutils.py +++ b/jdav_web/mailer/mailutils.py @@ -19,6 +19,8 @@ def send(subject, content, sender, recipients, message_id=None, reply_to=None, kwargs = {"reply_to": reply_to} else: kwargs = {} + if sender == settings.DEFAULT_SENDING_MAIL: + sender = addr_with_name(settings.DEFAULT_SENDING_MAIL, settings.DEFAULT_SENDING_NAME) url = prepend_base_url("/newsletter/unsubscribe") headers = {'List-Unsubscribe': '<{unsubscribe_url}>'.format(unsubscribe_url=url)} if message_id is not None: @@ -89,3 +91,7 @@ def get_invite_as_user_key(key): def prepend_base_url(absolutelink): return "{protocol}://{base}{link}".format(protocol=settings.PROTOCOL, base=settings.BASE_URL, link=absolutelink) + + +def addr_with_name(addr, name): + return "{name} <{addr}>".format(name=name, addr=addr) diff --git a/jdav_web/mailer/models.py b/jdav_web/mailer/models.py index a33267b..bed3877 100644 --- a/jdav_web/mailer/models.py +++ b/jdav_web/mailer/models.py @@ -3,7 +3,8 @@ from django.core.exceptions import ValidationError from django import forms from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext -from .mailutils import send, get_content, NOT_SENT, SENT, PARTLY_SENT +from .mailutils import send, get_content, NOT_SENT, SENT, PARTLY_SENT,\ + addr_with_name from utils import RestrictedFileField from jdav_web.celery import app from django.core.validators import RegexValidator @@ -159,15 +160,17 @@ class Message(CommonModel): # set correct from address # if the sender is none or if sending from association emails has been # disabled, use the default sending mail - if sender is None or not settings.SEND_FROM_ASSOCIATION_EMAIL: - from_addr = settings.DEFAULT_SENDING_MAIL + if sender is None: + from_addr = addr_with_name(settings.DEFAULT_SENDING_MAIL, settings.DEFAULT_SENDING_NAME) + elif sender and settings.SEND_FROM_ASSOCIATION_EMAIL: + from_addr = addr_with_name(sender.association_email, sender.name) else: - from_addr = sender.association_email + from_addr = addr_with_name(settings.DEFAULT_SENDING_MAIL, sender.name) # if sending from the association email has been disabled, # a sender was supplied and the reply to is empty, add the sender's # DAV360 email as reply to if sender and not settings.SEND_FROM_ASSOCIATION_EMAIL and sender.has_internal_email() and reply_to == []: - reply_to.append(sender.email) + reply_to.append(addr_with_name(sender.email, sender.name)) try: success = send(self.subject, get_content(self.content, registration_complete=True), from_addr,