mail -s "subject" [email protected] <test.html
funktioniert, aber nur für reine Text-E-Mails.
Was ist der richtige Weg zum Senden von HTML-E-Mails mit dem Linux-Befehl mail
?
Akzeptierte Antwort:
Es gibt viele verschiedene Versionen von mail
zirka. Wenn Sie über mail -s subject [email protected] [email protected] <body
hinausgehen (Für das Senden sind das alles POSIX-Garantien – und sogar -s
gab es früher nicht), haben sie in der Regel unterschiedliche Befehlszeilenoptionen. Das Hinzufügen einer zusätzlichen Kopfzeile ist nicht immer einfach.
-
Mit etwas
mailx
Implementierungen, z. vonmailutils
auf Ubuntu oder Debiansbsd-mailx
, es ist einfach, denn dafür gibt es eine Option.mailx -a 'Content-Type: text/html' -s "Subject" [email protected] <test.html
-
Mit dem Erbstück
mailx
, es gibt keinen bequemen Weg. Eine Möglichkeit, beliebige Header einzufügen, ist das Setzen voneditheaders=1
und verwenden Sie einen externen Editor (der ein Skript sein kann).## 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" [email protected] <<EOF ~e . EOF rm -f "$temp_script"
-
Mit einem allgemeinen POSIX
mailx
, ich weiß nicht, wie ich an Überschriften komme.
Wenn Sie mail
verwenden möchten oder mailx
, denken Sie daran
- Dies ist nicht einmal innerhalb einer bestimmten Linux-Distribution portierbar. Zum Beispiel haben sowohl Ubuntu als auch Debian mehrere Alternativen für
mail
undmailx
. - Beim Verfassen einer Nachricht
mail
undmailx
behandelt Zeilen, die mit~
beginnen als Befehle. Wenn Sie Text inmail
leiten , müssen Sie dafür sorgen, dass dieser Text keine Zeilen enthält, die mit~
beginnen .
Wenn Sie sowieso Software installieren, können Sie genauso gut etwas vorhersehbareres als mail
installieren /Mail
/mailx
. Mutti zum Beispiel. Mit Mutt können Sie die meisten Header in der Eingabe mit dem -H
versorgen Option, aber nicht Content-Type
, die über eine Mutt-Option gesetzt werden muss.
mutt -e 'set content_type=text/html' -s 'hello' '[email protected]' <test.html
Oder Sie können sendmail
aufrufen direkt. Es gibt mehrere Versionen von sendmail
da draußen, aber alle unterstützen sendmail -t
auf einfachste Weise eine Mail versenden, indem Sie die Empfängerliste aus der Mail auslesen. (Ich denke, sie unterstützen nicht alle Bcc:
.) Auf den meisten Systemen sendmail
befindet sich nicht im üblichen $PATH
, es befindet sich in /usr/sbin
oder /usr/lib
.
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: [email protected]
Subject: hello
Content-Type: text/html
EOF