Korrekturen
This commit is contained in:
parent
726d2607da
commit
f291076a3a
|
|
@ -8,6 +8,7 @@ import os
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from email.parser import BytesParser
|
from email.parser import BytesParser
|
||||||
from email.policy import default
|
from email.policy import default
|
||||||
|
from email.utils import getaddresses
|
||||||
|
|
||||||
# Python-Version prüfen
|
# Python-Version prüfen
|
||||||
if sys.version_info < (3, 12):
|
if sys.version_info < (3, 12):
|
||||||
|
|
@ -55,19 +56,51 @@ def process_email(domain):
|
||||||
|
|
||||||
# E-Mail-Header parsen
|
# E-Mail-Header parsen
|
||||||
email_msg = BytesParser(policy=default).parsebytes(email_content)
|
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")
|
|
||||||
|
|
||||||
logger.info(f"[{request_id}] From: {from_addr}, To: {to_addr}")
|
# 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
|
||||||
|
|
||||||
# An Postfix weiterleiten
|
# 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}, Recipients: {recipients}")
|
||||||
|
|
||||||
|
# An Postfix weiterleiten - für jeden Empfänger einzeln
|
||||||
with smtplib.SMTP(SMTP_HOST, SMTP_PORT) as smtp:
|
with smtplib.SMTP(SMTP_HOST, SMTP_PORT) as smtp:
|
||||||
smtp.sendmail(from_addr, to_addr, email_content)
|
smtp.mail(from_addr)
|
||||||
logger.info(f"[{request_id}] Email forwarded to Postfix for {domain}")
|
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,
|
||||||
|
'recipients_count': len(recipients),
|
||||||
|
'recipients': recipients
|
||||||
|
}), 200
|
||||||
|
|
||||||
return jsonify({'message': 'Email processed', 'request_id': request_id}), 200
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"[{request_id}] Error processing email: {str(e)}")
|
logger.error(f"[{request_id}] Error processing email: {str(e)}")
|
||||||
return jsonify({'error': str(e), 'request_id': request_id}), 500
|
return jsonify({'error': str(e), 'request_id': request_id}), 500
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue