Sto lavorando all'impostazione di uno script che inoltra la posta in arrivo a un elenco di destinatari.Codifica corpo posta elettronica Python 3
Ecco quello che ho adesso:
ho letto l'e-mail da stdin (che è come postfix passa):
email_in = sys.stdin.read()
incoming = Parser().parse(email_in)
sender = incoming['from']
this_address = incoming['to']
I test per multipart:
if incoming.is_multipart():
for payload in incoming.get_payload():
# if payload.is_multipart(): ...
body = payload.get_payload()
else:
body = incoming.get_payload(decode=True)`
ho creato il messaggio in uscita:
msg = MIMEMultipart()
msg['Subject'] = incoming['subject']
msg['From'] = this_address
msg['reply-to'] = sender
msg['To'] = "[email protected]"
msg.attach(MIMEText(body.encode('utf-8'), 'html', _charset='UTF-8'))
s = smtplib.SMTP('localhost')
s.send_message(msg)
s.quit()
Funziona piuttosto bene con caratteri ASCII (testo inglese), lo inoltra e tutto.
Quando invio caratteri non ASCII, però, restituisce senza senso (a seconda del byte client di posta elettronica o rappresentazioni ASCII dei caratteri UTF-8 caratteri)
Quale può essere il problema? È sul lato in arrivo o in uscita?
Non dovresti codificare il carico utile per la parte 'MIMEText'; ti codificherà per te, scegliendo comunque un set di caratteri adatto. Non che questo cambi l'output. –