diff --git a/email_handler.py b/email_handler.py index 4fa9a21e..59e8925a 100644 --- a/email_handler.py +++ b/email_handler.py @@ -1853,22 +1853,26 @@ def handle(envelope: Envelope) -> str: # case where From: header is a reverse alias which should never happen from_header = get_header_unicode(msg["From"]) if from_header: - _, from_header_address = parse_full_address(from_header) - if is_reply_email(from_header_address): - LOG.e("email sent from a reverse alias %s", from_header_address) - # get more info for debug - contact = Contact.get_by(reply_email=from_header_address) - if contact: - LOG.d("%s %s %s", contact.user, contact.alias, contact) + try: + _, from_header_address = parse_full_address(from_header) + except ValueError: + LOG.d("cannot parse the From header %s", from_header) + else: + if is_reply_email(from_header_address): + LOG.e("email sent from a reverse alias %s", from_header_address) + # get more info for debug + contact = Contact.get_by(reply_email=from_header_address) + if contact: + LOG.d("%s %s %s", contact.user, contact.alias, contact) - # To investigate. todo: remove - if TEMP_DIR: - file_name = str(uuid.uuid4()) + ".eml" - with open(os.path.join(TEMP_DIR, file_name), "wb") as f: - f.write(msg.as_bytes()) + # To investigate. todo: remove + if TEMP_DIR: + file_name = str(uuid.uuid4()) + ".eml" + with open(os.path.join(TEMP_DIR, file_name), "wb") as f: + f.write(msg.as_bytes()) - LOG.d("email saved to %s", file_name) - return status.E523 + LOG.d("email saved to %s", file_name) + return status.E523 if rate_limited(mail_from, rcpt_tos): LOG.w("Rate Limiting applied for mail_from:%s rcpt_tos:%s", mail_from, rcpt_tos)