Korrekturen
This commit is contained in:
parent
726d2607da
commit
f291076a3a
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue