Korrekturen

This commit is contained in:
Andreas Knuth 2025-06-10 22:05:49 -05:00
parent 726d2607da
commit f291076a3a
1 changed files with 42 additions and 9 deletions

View File

@ -8,6 +8,7 @@ import os
from dotenv import load_dotenv
from email.parser import BytesParser
from email.policy import default
from email.utils import getaddresses
# Python-Version prüfen
if sys.version_info < (3, 12):
@ -55,19 +56,51 @@ def process_email(domain):
# E-Mail-Header parsen
email_msg = BytesParser(policy=default).parsebytes(email_content)
from_addr = email_msg['From'] or 'lambda@andreasknuth.de' # Fallback
to_addr = email_msg['To']
if not to_addr:
raise ValueError("Kein Empfänger (To) in der E-Mail gefunden")
# From-Adresse extrahieren (konsistent mit Lambda)
from_headers = email_msg.get_all('from', [])
if from_headers:
from_addr = getaddresses(from_headers)[0][1]
else:
from_addr = 'lambda@andreasknuth.de' # Fallback
# Empfänger aus allen relevanten Headern extrahieren (konsistent mit Lambda)
to_addrs = [addr for _name, addr in getaddresses(email_msg.get_all('to', []))]
cc_addrs = [addr for _name, addr in getaddresses(email_msg.get_all('cc', []))]
bcc_addrs = [addr for _name, addr in getaddresses(email_msg.get_all('bcc', []))]
recipients = to_addrs + cc_addrs + bcc_addrs
# Debug-Ausgabe für Empfänger
logger.info(f"[{request_id}] To-Adressen: {to_addrs}")
logger.info(f"[{request_id}] CC-Adressen: {cc_addrs}")
logger.info(f"[{request_id}] BCC-Adressen: {bcc_addrs}")
logger.info(f"[{request_id}] Alle Empfänger: {recipients}")
if not recipients:
# Zusätzliche Debug-Info
logger.error(f"[{request_id}] Verfügbare Header: {list(email_msg.keys())}")
logger.error(f"[{request_id}] To-Header roh: {email_msg.get('To')}")
logger.error(f"[{request_id}] CC-Header roh: {email_msg.get('Cc')}")
raise ValueError("Keine Empfänger (To/CC/BCC) in der E-Mail gefunden")
logger.info(f"[{request_id}] From: {from_addr}, To: {to_addr}")
logger.info(f"[{request_id}] From: {from_addr}, Recipients: {recipients}")
# An Postfix weiterleiten
# An Postfix weiterleiten - für jeden Empfänger einzeln
with smtplib.SMTP(SMTP_HOST, SMTP_PORT) as smtp:
smtp.sendmail(from_addr, to_addr, email_content)
logger.info(f"[{request_id}] Email forwarded to Postfix for {domain}")
smtp.mail(from_addr)
for recipient in recipients:
smtp.rcpt(recipient)
smtp.data(email_content)
logger.info(f"[{request_id}] Email forwarded to Postfix for {domain} - {len(recipients)} recipients")
return jsonify({'message': 'Email processed', 'request_id': request_id}), 200
return jsonify({
'message': 'Email processed',
'request_id': request_id,
'recipients_count': len(recipients),
'recipients': recipients
}), 200
except Exception as e:
logger.error(f"[{request_id}] Error processing email: {str(e)}")
return jsonify({'error': str(e), 'request_id': request_id}), 500