Domanda

Ho il seguente codice:

msgtxt = "é"

msg = MIMEText(msgtxt)
msg.set_charset('ISO-8859-1')
msg['Subject'] = "subject"
msg['From'] = "from@mail.com"
msg['To'] = "to@mail.com"
serv.sendmail("from@mail.com","to@mail.com", msg.as_string())

L'e-mail arrivano con à © come il suo corpo, invece dell'e

atteso

ho provato:

msgtxt = "é".encode("ISO-8859-1")
msgtxt = u"é"
msgtxt = unicode("é", "ISO-8859-1")

tutto resa lo stesso risultato.

Come per fare questo lavoro?

Ogni aiuto è apprezzato. Grazie in anticipo, J.

È stato utile?

Soluzione

msgtxt = "é"
msg.set_charset('ISO-8859-1')

Bene, qual è la codifica del file sorgente contenente questo codice? Se si tratta di UTF-8, che è una buona scelta di default, basta scrivere il é avrà dato la stringa '\xc3\xa9' a due byte, che, se visti come ISO-8859-1, si presenta come é.

Se si desidera utilizzare non-ASCII stringhe di byte nel file di origine, senza doversi preoccupare di quello che codifica l'editor di testo è il risparmio come, utilizzare una fuga letterale di stringa:

msgtxt = '\xE9'

Altri suggerimenti

# coding: utf-8        (or whatever you want to save your source file in)
msgtxt = u"é"
msg = MIMEText(msgtxt,_charset='ISO-8859-1')

Senza la u il testo sarà nella codifica del sorgente. Come una stringa Unicode, msgtxt verranno codificati nel set di caratteri indicata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top