Créer un e-mail en plusieurs parties et l'envoyer sous Linux

12

Nous utilisons mutt pour envoyer des e-mails.

mutt -s "Test" -e "Content-Type: text/html" [email protected] < message.html

Nous envoyons nos mises à jour par e-mail au format HTML. Nous souhaitons envoyer des e-mails en plusieurs parties contenant à la fois une version texte et une version html.

  1. Comment créer un tel message en plusieurs parties sous Linux lorsque l'objet de l'e-mail et les versions HTML et texte du corps de l'e-mail sont fournis?
  2. Pouvons-nous utiliser mutt pour envoyer l'e-mail en plusieurs parties créé à l'étape 1, à partir de l'invite Linux?

Environnement: RedHat Enterprise Linux 5, mutt

user544192
la source

Réponses:

10

Comment créer un tel message en plusieurs parties sous Linux lorsque l'objet de l'e-mail et les versions HTML et texte du corps de l'e-mail sont fournis?

Créez un message de type multipart/alternativetel que documenté dans la RFC 2046 :

De: Exemple d'entreprise <[email protected]>
À: Joe User <[email protected]>
Date: sam.21 mai 2011 17:40:11 +0300
Objet: Exemple de message en plusieurs parties
Version MIME: 1.0
Type de contenu: multipart / alternative; limite = asdfghjkl

--asdfghjkl
Type de contenu: texte / simple; charset = utf-8

Bonjour à tous!

--asdfghjkl
Type de contenu: texte / html; charset = utf-8

<! DOCTYPE html>
<body>
<p> Bonjour à tous! </p>
</body>

--asdfghjkl--

Voir RFC 2046 et RFC 5322 pour la syntaxe exacte.

Pouvons-nous utiliser mutt pour envoyer l'e-mail en plusieurs parties créé à l'étape 1, à partir de l'invite Linux?

Si vous trouvez un moyen de définir le bon en-tête Content-Type. (Dans votre exemple, vous utilisez -e, mais mutt utilise -eà des fins différentes. Même -e "my_hdr Content-Type: ..."laisse le texte original / en-tête brut intact.)

Il est préférable d'envoyer directement le courrier généré sendmail. Vous devrez créer les en-têtes vous-même - voir l'exemple; utilisez strftime("%a, %d %b %Y %T %z")pour Date et une chaîne de caractères alphanumériques aléatoires pour la limite. Dirigez ensuite le message préparé, y compris les en-têtes, vers sendmail -i -t:

sendmail -i -t < above-example.txt

(L' -toption signifie «obtenir les destinataires de la ligne À: »; vous pouvez également utiliser sendmail -i [email protected])

user1686
la source
Merci pour la bonne réponse, grawity! Merci également d'avoir expliqué en détail comment composer un e-mail en plusieurs parties. :)
user544192
0

Jetez un œil à https://github.com/shivylp/mailprod . J'ai développé ce petit utilitaire / bibliothèque Python car l'utilisation de la ligne de commande pour les gros courriers ne semblait pas être une option fiable. Avec mailprodcli, c'est aussi simple que de dire mailprodcli template.xml --send. L'exemple template.xml qui inclut même une image est aussi simple que:

<?xml version="1.0" encoding="UTF-8"?>
<mail>
  <from>[email protected]</from>
  <to>[email protected]</to>
  <to>[email protected]</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>
Shivaprasad Bhat
la source
Cela enverra-t-il également une version en clair? Je pense qu'OP veut envoyer un e-mail en plusieurs parties où le contenu HTML et le texte en clair sont inclus dans le même message.
cascer1