Sto generando e-mail con l'aiuto del modulo email Python.
Qui ci sono poche righe di codice, che dimostra la mia domanda:Modulo email Python: intestazione modulo "Da" con un nome unicode + email
msg = email.MIMEMultipart.MIMEMultipart('alternative')
msg['From'] = "[email protected]"
msg.as_string()
Out[7]: 'Content-Type: multipart/alternative;\n boundary="===============9006870443159801881=="\nMIME-Version: 1.0\nFrom: [email protected]\n\n--===============9006870443159801881==\n\n--===============9006870443159801881==--'
Come si può vedere, è tutto a posto qui, Dal campo contiene email formica è fresco. Ma cosa succede se voglio aggiungere un nome prima dell'email? Soprattutto unicode uno:
In [8]: u.get_full_name()
Out[8]: u'\u0414\u0438\u043c\u0430 \u0426\u0443\u043a\u0430\u043d\u043e\u0432'
In [9]: msg = email.MIMEMultipart.MIMEMultipart('alternative')
In [10]: msg['From'] = "%s <%s>" % (u.get_full_name(), "[email protected]")
In [11]: msg.as_string()
Out[11]: 'Content-Type: multipart/alternative;\n boundary="===============5792069034892928634=="\nMIME-Version: 1.0\nFrom: =?utf-8?b?0JTQuNC80LAg0KbRg9C60LDQvdC+0LIgPGVtYWlsQGF0LmNvbT4=?=\n\n--===============5792069034892928634==\n\n--===============5792069034892928634==--'
Qui si può vedere, che tutta la stringa (nome, e-mail) è stato codificato in base64 (ed è anche abbastanza logico, come MimeMultipart saprà che stringa contiene unicode e non-unicode parti).
Quindi, la mia domanda è: come devo dire modulo e-mail per farmi bella "From" del tipo:
From: =?UTF-8?B?0JLQmtC+0L3RgtCw0LrRgtC1?= <[email protected]> ?
Inoltre, ho imparato un po 'di RFC2822 (http: //www.faqs .org/rfcs/rfc2822.html, p.3.6.2). Indica:
I campi di origine indicano la/e cassetta/e della sorgente del messaggio . Il campo "Da:" specifica l'autore (i) del messaggio, ovvero, la/e cassetta/e della (e) persona (e) o dei sistemi responsabili per la scrittura del messaggio. Il campo "Mittente:" specifica la cassetta postale dell'agente responsabile della trasmissione effettiva del messaggio . Ad esempio, se un segretario dovesse inviare un messaggio per ad un'altra persona, la casella di posta della segreteria apparirebbe nel campo "Sender:" e la cassetta postale dell'autore effettivo comparirà nel campo "Da:" nel campo . Se il mittente del messaggio può essere indicato con da una singola casella di posta e l'autore e il trasmettitore sono identici, il campo "Sender:" NON DEVE essere utilizzato. In caso contrario, verranno visualizzati entrambi i campi DOVREBBE .
Significa che dovrei combinare queste due intestazioni? (Da e mittente). Sono un po 'confuso, perché ho notato molte e-mail nella mia gmail (guardando attraverso "Mostra originale") in cui vengono visualizzati il nome e l'e-mail del campo Da.
Grazie per l'aiuto.
FANTASTICO! Questo è esattamente ciò di cui ho bisogno, grazie! –
Ho cercato di capirlo per diverse ore! Grazie! – Ofir
grazie, per le persone che confondono la seconda parentesi di formataddr, rappresenta la tupla. – iownthegame