diff --git a/email-worker/email_processing/bounce_handler.py b/email-worker/email_processing/bounce_handler.py index 10e274b..625612d 100644 --- a/email-worker/email_processing/bounce_handler.py +++ b/email-worker/email_processing/bounce_handler.py @@ -18,7 +18,15 @@ class BounceHandler: @staticmethod def is_ses_bounce_notification(parsed_email) -> bool: """Check if email is from SES MAILER-DAEMON""" - from_header = (parsed_email.get('From') or '').lower() + try: + from_header = (parsed_email.get('From') or '').lower() + except (AttributeError, TypeError, KeyError): + # Malformed From header - safely extract raw value + try: + from_header = str(parsed_email.get_all('From', [''])[0]).lower() + except: + from_header = '' + return 'mailer-daemon@' in from_header and 'amazonses.com' in from_header def apply_bounce_logic( @@ -88,4 +96,4 @@ class BounceHandler: return parsed, True log("⚠ No bounced recipients found in bounce info", 'WARNING', worker_name) - return parsed, False + return parsed, False \ No newline at end of file