[Risolto][Python3][sendmail] encoding/decoding di email
Inviato: sabato 18 marzo 2017, 19:31
Un saluto a tutti.
Uno script (peraltro funzionante senza errori) invia una mail e *alcuni* destinatari non ne leggono i caratteri nonASCII. Per dire: gli stessi caratteri diventano leggibili se quel destinatario inoltra quella stessa mail su Gmail.
La stringa che costituisce il corpo della mail viene estratta da un file di appoggio creato localmente. Questa è la mia localizzazione
Penso che sia un problema mio e non (solo) dei destinatari perché se eseguo l' invio con uno script bash, a partire dallo stesso file di testo, i caratteri si leggono tutti, e anche sui destinatari `problematici'. Quindi deve esserci un modo per evitare questo fastidio ma non mi raccapezzo.
posto il frammento che ritengo utile, sfoltito dagli import e da tutti i controlli di errori ed eccezionima se servisse posto tutto il malloppo, l'ho sfoltito sperando di invogliare di più alla lettura i volenterosi
Grazie
Uno script (peraltro funzionante senza errori) invia una mail e *alcuni* destinatari non ne leggono i caratteri nonASCII. Per dire: gli stessi caratteri diventano leggibili se quel destinatario inoltra quella stessa mail su Gmail.
La stringa che costituisce il corpo della mail viene estratta da un file di appoggio creato localmente. Questa è la mia localizzazione
Codice: Seleziona tutto
$ locale
LANG=it_IT.UTF-8
LANGUAGE=it:fr:en
LC_CTYPE="it_IT.UTF-8"
LC_NUMERIC=it_IT.UTF-8
LC_TIME=it_IT.UTF-8
LC_COLLATE="it_IT.UTF-8"
LC_MONETARY=it_IT.UTF-8
LC_MESSAGES="it_IT.UTF-8"
LC_PAPER=it_IT.UTF-8
LC_NAME=it_IT.UTF-8
LC_ADDRESS=it_IT.UTF-8
LC_TELEPHONE=it_IT.UTF-8
LC_MEASUREMENT=it_IT.UTF-8
LC_IDENTIFICATION=it_IT.UTF-8
LC_ALL=
posto il frammento che ritengo utile, sfoltito dagli import e da tutti i controlli di errori ed eccezioni
Codice: Seleziona tutto
[ . . . ]
ilTXT = "/tmp/{}.txt".format(CognomeNome) # il file di testo (creato con libreoffice)
with open(ilTXT, "r") as f:
testo = f.read()
for regex in LISTAREGEX:
match = re.search(regex, testo, re.DOTALL)
if 'oggetto1' in regex:
SUBJECT = match.group(0).strip()
elif 'contatti' in regex:
TO = match.group(0).strip()
elif 'messaggio1' in regex:
BODY = match.group(0).strip()
#
# costruisce le mail #
#¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
message = """\
From: {}
To: {}
Subject: {}
{}
""".format(USER, TO, SUBJECT, BODY)
#
# invia le mail #
#¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
listaDestinatari = TO.split(',')
s = smtplib.SMTP_SSL(smtpSERVER)invio
s.login(USER, password)
s.sendmail(USER, listaDestinatari, message.encode('utf-8')) # <------- ecco il punto
s.quit
[ . . . ]
Grazie