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" test@example.com < 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

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 <news@example.com>
À: Joe User <joe.u@example.net>
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 joe.u@example.net)


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>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>

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.