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
mailxImplementierungen, z. vonmailutilsauf 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=1und 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
mailundmailx. - Beim Verfassen einer Nachricht
mailundmailxbehandelt Zeilen, die mit~beginnen als Befehle. Wenn Sie Text inmailleiten , 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