2015-03-30 14 views
9

In Django EmailMultiAlternatives documentation non c'è nulla su come aggiungere intestazioni come "formato" o "Rispondi a" in EmailMultiAlternatives. Mi ci è voluto un po 'per capirlo e sto inviando questo post per aiutare gli altri a risparmiare tempo.Aggiunta di intestazioni a Django EmailMultiAlternatives

Come si può vedere nel codice sorgente di django, EmailMultiAlternatives eredita da EmailMessage, in modo che abbiano gli stessi parametri nel costruttore di init. In questo modo, possiamo aggiungere intestazioni come:

msg = EmailMultiAlternatives(
    subject, message, from_email, to_list, 
    headers={'Reply-To': "[email protected]", 'format': 'flowed'} 
) 
+5

Si dovrebbe scrivere questo come soluzione. –

+0

@VanniTotaro Apprezzo il tuo suggerimento e so che posso ottenere più reputazione rispondendo alle domande, ma quando posso renderlo come un singolo post conciso, perché dovrei dividerlo in due post più lunghi e sprecare il tempo degli altri? – 1man

+7

Beh, prima di tutto questa domanda diventerebbe "risposta", oppure se sono alla ricerca di una risposta, potrei finire di saltare questo perché apparentemente è una domanda senza risposta. Inoltre, penso che le regole qui scoraggino questo schema di post Q + A. Grazie, grazie perché ho fatto uso della tua bella soluzione. –

risposta

0

Torna nel 2015 OP si lamentava, che non c'erano istruzioni riportate nella documentazione, come aggiungere intestazioni come "Format" e "Reply-To" di Django di posta (django .core.mail) modulo. Tuttavia oggi, durante l'utilizzo di same documentation link. Possiamo trovare descrizione e gli esempi nel 2018 con facilità:

classeEmailMessage [source]

Il EmailMessageclasse viene inizializzato con i seguenti parametri (nell'ordine dato, se vengono utilizzati argomenti posizionali). Tutti i parametri sono facoltativi e possono essere impostati in qualsiasi momento prima di chiamare il metodo send() .

  • soggetto: L'oggetto della e-mail.
  • corpo: il corpo del testo. Questo dovrebbe essere un semplice messaggio di testo.
  • from_email: l'indirizzo del mittente. Entrambi i moduli [email protected] e Fred <[email protected]> sono legali. Se omesso, viene utilizzata l'impostazione DEFAULT_FROM_EMAIL .
  • a: un elenco o una tupla di indirizzi di destinatari.
  • bcc: un elenco o una tupla di indirizzi utilizzati nell'intestazione "Ccn" quando si invia l'e-mail.
  • collegamento: un'istanza di backend di posta elettronica. Utilizzare questo parametro se si desidera utilizzare la stessa connessione per più messaggi. Se omesso, viene creata una nuova connessione quando viene chiamato send().
  • allegati: un elenco di allegati da inserire nel messaggio. Queste possono essere sia email.MIMEBase.MIMEBase istanze oppure (filename, content, mimetype) triple.
  • intestazioni: un dizionario di intestazioni extra da inserire nel messaggio. Le chiavi sono il nome dell'intestazione, i valori sono i valori dell'intestazione.È compito del chiamante assicurare che i nomi e i valori dell'intestazione siano nel formato corretto per un messaggio di posta elettronica. L'attributo corrispondente è extra_headers.
  • cc: un elenco o una tupla di indirizzi di destinatari utilizzati nell'intestazione "Cc" quando si invia l'e-mail.

Ad esempio:

email = EmailMessage('Hello', 'Body goes here', '[email protected]', 
      ['[email protected]', '[email protected]'], ['[email protected]'], 
      headers = {'Reply-To': '[email protected]', 'format': 'flowed'}) 

Come si vede dagli esempi, EmailMessage ha headers argomento (dizionario) troppo, EmailMultiAlternatives in base alle docstring in source code è:

A version of EmailMessage that makes it easy to send multipart/alternative 
messages. For example, including text and HTML versions of the text is 
made easier. 

Quindi se non hai bisogno di qualcosa di specifico, EmailMessage va bene, perché attualmente EmailMultiAlternatives consente di includere facilmente testo e versioni HTML del testo.

Problemi correlati