use user preferred sender format

This commit is contained in:
Son NK 2020-03-28 22:37:00 +01:00
parent 33fd40f6ce
commit 7f49312255
2 changed files with 13 additions and 5 deletions

View File

@ -365,16 +365,22 @@ def get_orig_message_from_bounce(msg: Message) -> Message:
return part
def new_addr(old_addr, new_email) -> str:
def new_addr(old_addr, new_email, user: User) -> str:
"""replace First Last <first@example.com> by
first@example.com by SimpleLogin <new_email>
`new_email` is a special reply address
"""
name, old_email = parseaddr(old_addr)
new_name = f"{old_email} via SimpleLogin"
new_addr = formataddr((new_name, new_email)).strip()
if user.use_via_format_for_sender:
new_name = f"{old_email} via SimpleLogin"
else:
name = name or ""
new_name = (
name + (" - " if name else "") + old_email.replace("@", " at ")
).strip()
new_addr = formataddr((new_name, new_email)).strip()
return new_addr.strip()

View File

@ -290,7 +290,9 @@ def replace_header_when_forward(msg: Message, alias: Alias, header: str):
)
db.session.commit()
new_addrs.append(new_addr(contact.website_from, contact.reply_email))
new_addrs.append(
new_addr(contact.website_from, contact.reply_email, alias.user)
)
need_replace = True
if need_replace:
@ -438,7 +440,7 @@ def handle_forward(envelope, smtp: SMTP, msg: Message, rcpt_to: str) -> (bool, s
# replace the email part in from: header
contact_from_header = msg["From"]
contact_name, contact_email = parseaddr(contact_from_header)
new_from_header = new_addr(contact_from_header, contact.reply_email)
new_from_header = new_addr(contact_from_header, contact.reply_email, user)
add_or_replace_header(msg, "From", new_from_header)
LOG.d("new_from_header:%s, old header %s", new_from_header, contact_from_header)