From 1cb8282cb2f60c862ff1e7331841d875d736686f Mon Sep 17 00:00:00 2001 From: Son NK Date: Thu, 21 Nov 2019 13:58:06 +0100 Subject: [PATCH] change the to: header so target is user email --- email_handler.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/email_handler.py b/email_handler.py index ff52a8f2..6e6f9571 100644 --- a/email_handler.py +++ b/email_handler.py @@ -47,8 +47,6 @@ from app.utils import random_words from server import create_app - - class MailHandler: async def handle_RCPT(self, server, session, envelope, address, rcpt_options): if not address.endswith(EMAIL_DOMAIN): @@ -97,6 +95,8 @@ class MailHandler: LOG.d("alias %s not exist") return "510 Email not exist" + user_email = gen_email.user.email + website_email = envelope.mail_from forward_email = ForwardEmail.get_by( @@ -121,14 +121,7 @@ class MailHandler: if gen_email.enabled: # add custom header - msg.add_header("X-SimpleLogin-Type", "Forward") - - # no need to modify reply-to as it is used in From: header directly - # try: - # msg.add_header("Reply-To", forward_email.reply_email) - # except ValueError: - # # the header exists already - # msg.replace_header("Reply-To", forward_email.reply_email) + add_or_replace_header(msg, "X-SimpleLogin-Type", "Forward") # remove reply-to header if present if msg["Reply-To"]: @@ -147,16 +140,23 @@ class MailHandler: msg.replace_header("From", from_header) LOG.d("new from header:%s", from_header) + # change the to: header so target is user email + to_header = alias.replace("@", " at ") + f" <{user_email}>" + msg.replace_header("To", to_header) + LOG.d("new to header: %s", to_header) + # add List-Unsubscribe header unsubscribe_link = f"{URL}/dashboard/unsubscribe/{gen_email.id}" add_or_replace_header(msg, "List-Unsubscribe", f"<{unsubscribe_link}>") - add_or_replace_header(msg, "List-Unsubscribe-Post", "List-Unsubscribe=One-Click") + add_or_replace_header( + msg, "List-Unsubscribe-Post", "List-Unsubscribe=One-Click" + ) original_subject = msg["Subject"] LOG.d( "Forward mail from %s to %s, subject %s, mail_options %s, rcpt_options %s ", website_email, - gen_email.user.email, + user_email, original_subject, envelope.mail_options, envelope.rcpt_options, @@ -165,7 +165,7 @@ class MailHandler: smtp.send_message( msg, from_addr=envelope.mail_from, - to_addrs=[gen_email.user.email], # user personal email + to_addrs=[user_email], # user personal email mail_options=envelope.mail_options, rcpt_options=envelope.rcpt_options, ) @@ -191,7 +191,9 @@ class MailHandler: # add List-Unsubscribe header unsubscribe_link = f"{URL}/dashboard/unsubscribe/{forward_email.gen_email_id}" add_or_replace_header(msg, "List-Unsubscribe", f"<{unsubscribe_link}>") - add_or_replace_header(msg, "List-Unsubscribe-Post", "List-Unsubscribe=One-Click") + add_or_replace_header( + msg, "List-Unsubscribe-Post", "List-Unsubscribe=One-Click" + ) LOG.d( "send email from %s to %s, mail_options:%s,rcpt_options:%s",