
Ich versuche, eine HTML-E-Mail von unserem CentOS-Server an Benutzer zu senden. Langfristig werde ich ein COBOL-Programm erstellen, das den Befehl zum Senden von Berichten an den Benutzer ausführt.
Hier sind einige Einzelheiten.
- CentOS 6.4
- MAU: Mailx
- MTA: Postfix 2.6.6
- Postfix betreibt ein Relay über einen Exchange-Server.
Was die Befehle angeht, die ich versucht habe auszuführen. Der, den ich heute am häufigsten gesehen habe, ist der folgende.
$ mailx -a 'Content-Type: text/html' -s "Command Line Test" [email protected] < ./bodytext.html
Nach dem Ausführen des angezeigten Befehls erhalte ich die Fehlermeldung „Content-Type: text/html: Keine solche Datei oder kein solches Verzeichnis“. Ich bin ziemlich sicher, dass nach einem bestimmten Update -a nicht mehr als Flag für die Content-Type-Bezeichnung zugelassen wurde.
Ich habe auch versucht, den „Content-Type: text/html“ als allererste Zeile zur eigentlichen Datei bodytext.html hinzuzufügen. Ich bin irgendwie ratlos, was ich tun kann, um die HTML-E-Mail zu senden. Einige der Quellen, die ich gefunden habe, sagen, dass Mailx und Postfix HTML-E-Mails nicht richtig senden können. Hoffentlich ist das nicht der Fall, aber wenn doch, würde ich gerne wissen, was Sie von anderen MAU- und MTA-Technologien halten?
Antwort1
Da Sie anscheinend die volle Kontrolle über die generierte Textdatei haben, wäre die /usr/sbin/sendmail
direkte Einbindung der einfachste und wahrscheinlich portabelste Weg.
/usr/sbin/sendmail -t < complete-mail.txt
Dazu müssten Sie alle wichtigen Header selbst hinzufügen ( From
, To
, Subject
, und Content-Type
). Die Datei sollte folgendermaßen aussehen:
From: Company <[email protected]>
To: Customer <[email protected]>
Subject: You are awesome
Content-Type: text/html
<html>…</html>
Postfix fügt fehlende, aber erforderliche Header hinzu, wie Date
.
Antwort2
Hast du überhaupt die Bedienungsanleitung gelesen fürmailx
, insbesondere die -a
Option?
-a file
Hängen Sie die angegebene Datei an die Nachricht an.
AusGilles Antwort, da CentOS diese Version von verwendet mailx
:
Mit dem Erbstückmailx, es gibt keine bequeme Möglichkeit. Eine Möglichkeit, beliebige Header einzufügen, besteht darin, editheaders=1 zu setzen und einen externen Editor (das kann ein Skript sein) zu verwenden.
## Prepare a temporary script that will serve as an editor. ## This script will be passed to ed. temp_script=$(mktemp) cat <<'EOF' >>"$temp_script" 1a Content-Type: text/html . $r test.html w q EOF ## Call mailx, and tell it to invoke the editor script EDITOR="ed -s $temp_script" heirloom-mailx -S editheaders=1 -s "Subject" to@address <<EOF ~e . EOF rm -f "$temp_script"
Postfix kann sicherlich HTML-Mails versenden.