Creazione di un'e-mail multipart e invio in Linux


12

Usiamo mutt per inviare e-mail.

mutt -s "Test" -e "Content-Type: text/html" test@example.com < message.html

Inviamo i nostri aggiornamenti e-mail in formato HTML. Vorremmo inviare e-mail in più parti contenenti sia una versione di testo che una versione html.

  1. Come possiamo creare un tale messaggio multipart in Linux quando vengono forniti l'oggetto dell'e-mail e le versioni HTML e di testo del corpo dell'email?
  2. Possiamo usare mutt per inviare l'e-mail multipart creata nel passaggio 1, dal prompt di Linux?

Ambiente: RedHat Enterprise Linux 5, mutt

Risposte:


10

Come possiamo creare un tale messaggio multipart in Linux quando vengono forniti l'oggetto dell'e-mail e le versioni HTML e di testo del corpo dell'email?

Creare un messaggio di tipo multipart/alternativecome documentato in RFC 2046 :

Da: esempio società <news@example.com>
A: Utente Joe <joe.u@example.net>
Data: sabato 21 maggio 2011 17:40:11 +0300
Oggetto: Esempio di messaggio multipart
Versione MIME: 1.0
Tipo di contenuto: multipart / alternativo; boundary = asdfghjkl

--asdfghjkl
Tipo di contenuto: text / plain; charset = utf-8

Ciao a tutti!

--asdfghjkl
Tipo di contenuto: text / html; charset = utf-8

<! DOCTYPE html>
<Body>
<p> Ciao a tutti! </p>
</ Body>

--asdfghjkl--

Vedere RFC 2046 e RFC 5322 per la sintassi esatta.

Possiamo usare mutt per inviare l'e-mail multipart creata nel passaggio 1, dal prompt di Linux?

Se trovi un modo per impostare l'intestazione Content-Type corretta. (Nel tuo esempio, stai usando -e, ma mutt usa -eper scopi diversi. Perfino -e "my_hdr Content-Type: ..."lascia intatto il testo originale / intestazione normale.)

È meglio inviare la posta generata direttamente tramite sendmail. Dovrai creare tu stesso le intestazioni - vedi l'esempio; utilizzare strftime("%a, %d %b %Y %T %z")per Data e una stringa di caratteri alfanumerici casuali per il confine. Quindi reindirizzare il messaggio preparato, comprese le intestazioni, a sendmail -i -t:

sendmail -i -t < above-example.txt

(L' -topzione significa "ottieni i destinatari dalla linea A: "; in alternativa puoi usare sendmail -i joe.u@example.net)


Grazie per l'ottima risposta, gravità! Grazie anche per aver spiegato in dettaglio come comporre un messaggio di posta elettronica multipart. :)
user544192,

0

Dai un'occhiata a https://github.com/shivylp/mailprod . Ho sviluppato questa piccola utility / libreria Python poiché l'uso della riga di comando per le grandi mail non sembra essere un'opzione affidabile. Con mailprodcli è semplice come dire mailprodcli template.xml --send. Esempio template.xml che include anche un'immagine è semplice come:

<?xml version="1.0" encoding="UTF-8"?>
<mail>
  <from>sender@source.com</from>
  <to>recipient1@destination1.com</to>
  <to>recipient2@destination2.com</to>
  <body type="text/html">
    <![CDATA[<html>
<b>Neat!</b><br><center><img src="cid:sample"></center>
</html>]]>
  </body>
  <body type="image" src="sample.png" id="sample" />
</mail>

Questo invierà anche una versione in testo normale? Credo che OP voglia inviare un messaggio di posta elettronica in più parti in cui sia il contenuto HTML che quello in chiaro sono inclusi nello stesso messaggio.
cascer1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.