Fixes
This commit is contained in:
parent
ce296ecdab
commit
a709172a99
|
|
@ -1,4 +1,3 @@
|
|||
# lambda_andreasknuth.py
|
||||
import os
|
||||
import boto3
|
||||
import smtplib
|
||||
|
|
@ -140,11 +139,10 @@ def lambda_handler(event, context):
|
|||
delivered = []
|
||||
refused = {}
|
||||
if recipients:
|
||||
# Prepare message string for sendmail (decode bytes safely)
|
||||
try:
|
||||
raw_message = raw_bytes.decode('utf-8')
|
||||
except Exception:
|
||||
raw_message = raw_bytes.decode('utf-8', errors='replace')
|
||||
# WICHTIG: Verwenden Sie die rohen Bytes direkt, NICHT dekodieren!
|
||||
# smtplib.sendmail() akzeptiert sowohl bytes als auch strings
|
||||
# Bei bytes wird keine weitere Kodierung vorgenommen
|
||||
raw_message = raw_bytes
|
||||
|
||||
# Determine a sensible local hostname (HELO). Prefer explicit ENV, else use domain of bucket (recipient domain).
|
||||
env_local = os.environ.get('SMTP_LOCAL_HOSTNAME')
|
||||
|
|
@ -171,6 +169,7 @@ def lambda_handler(event, context):
|
|||
print("SMTP login failed (continuing):", e)
|
||||
|
||||
try:
|
||||
# Sende die rohen Bytes direkt
|
||||
send_result = smtp.sendmail(frm_addr, recipients, raw_message)
|
||||
# sendmail returns dict of refused recipients
|
||||
if isinstance(send_result, dict):
|
||||
|
|
@ -189,10 +188,12 @@ def lambda_handler(event, context):
|
|||
delivered = [r for r in recipients if r not in refused]
|
||||
except Exception as e:
|
||||
print("SMTP sendmail error:", e)
|
||||
traceback.print_exc() # Mehr Details für Debugging
|
||||
refused = {r: ('error', str(e)) for r in recipients}
|
||||
delivered = []
|
||||
except Exception as e:
|
||||
print("Error connecting to SMTP host:", e)
|
||||
traceback.print_exc() # Mehr Details für Debugging
|
||||
refused = {r: ('connect-error', str(e)) for r in recipients}
|
||||
delivered = []
|
||||
print(f"SMTP completed in {time.time()-start:.2f}s delivered={delivered} refused={refused}")
|
||||
|
|
|
|||
Loading…
Reference in New Issue