Erstellen einer mehrteiligen E-Mail und Senden unter Linux

12

Wir verwenden Mutt, um E-Mails zu versenden.

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

Wir versenden unsere E-Mail-Updates im HTML-Format. Wir möchten E-Mails mehrteilig versenden, die sowohl eine Textversion als auch eine HTML-Version enthalten.

  1. Wie erstellen wir eine solche mehrteilige Nachricht unter Linux, wenn der Betreff der E-Mail sowie HTML- und Textversionen des E-Mail-Textes angegeben werden?
  2. Können wir mutt verwenden, um die in Schritt 1 erstellte mehrteilige E-Mail über die Linux-Eingabeaufforderung zu senden?

Umgebung: RedHat Enterprise Linux 5, mutt

user544192
quelle

Antworten:

10

Wie erstellen wir eine solche mehrteilige Nachricht unter Linux, wenn der Betreff der E-Mail sowie HTML- und Textversionen des E-Mail-Textes angegeben werden?

Erstellen Sie eine Nachricht vom Typ, multipart/alternativewie in RFC 2046 dokumentiert :

Von: Beispielfirma <[email protected]>
An: Joe User <[email protected]>
Datum: Sa, 21. Mai 2011, 17:40:11 Uhr +0300 Uhr
Betreff: Beispiel für eine mehrteilige Nachricht
MIME-Version: 1.0
Inhaltstyp: mehrteilig / alternativ; Grenze = asdfghjkl

--asdfghjkl
Inhaltstyp: Text / Klartext; Zeichensatz = utf-8

Hallo zusammen!

--asdfghjkl
Inhaltstyp: text / html; Zeichensatz = utf-8

<! DOCTYPE html>
<body>
<p> Hallo allerseits! </ p>
</ body>

--asdfghjkl--

Die genaue Syntax finden Sie in RFC 2046 und RFC 5322 .

Können wir mutt verwenden, um die in Schritt 1 erstellte mehrteilige E-Mail über die Linux-Eingabeaufforderung zu senden?

Wenn Sie eine Möglichkeit finden, den richtigen Content-Type-Header festzulegen. (In Ihrem Beispiel verwenden Sie -e, aber mutt verwendet -efür verschiedene Zwecke. -e "my_hdr Content-Type: ..."Lässt sogar den Originaltext / die einfache Überschrift intakt.)

Es ist besser, generierte E-Mails direkt zu versenden sendmail. Sie müssen die Header selbst erstellen - siehe Beispiel; Verwenden Sie strftime("%a, %d %b %Y %T %z")für Datum und eine Zeichenfolge aus zufälligen alphanumerischen Zeichen für die Grenze. Leiten Sie dann die vorbereitete Nachricht einschließlich der Überschriften an sendmail -i -t:

sendmail -i -t < above-example.txt

(Die -tOption bedeutet "Empfänger aus der Zeile An abrufen"; Sie können sie alternativ verwenden. sendmail -i [email protected])

user1686
quelle
Danke für die tolle Antwort, Grawity! Vielen Dank auch dafür, dass Sie ausführlich erklärt haben, wie Sie eine mehrteilige E-Mail erstellen. :)
user544192
0

Schauen Sie sich https://github.com/shivylp/mailprod an . Ich habe dieses kleine Python-Dienstprogramm / diese kleine Python-Bibliothek entwickelt, da die Verwendung der Befehlszeile für große E-Mails keine zuverlässige Option zu sein schien. Mit mailprodcli ist es so einfach wie zu sagen mailprodcli template.xml --send. Beispiel template.xml, die sogar ein Bild enthält, ist so einfach wie:

<?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
quelle
Wird dies auch eine Klartextversion senden? Ich glaube, OP möchte eine mehrteilige E-Mail senden, in der sowohl HTML- als auch Klartextinhalte in derselben Nachricht enthalten sind.
Cascer1