mail -s "subject" [email protected] <test.html
funguje, ale pouze pro e-maily ve formátu prostého textu.
Jaký je správný způsob odesílání HTML e-mailu pomocí linuxového příkazu mail
?
Přijatá odpověď:
Existuje mnoho různých verzí mail
kolem. Když překročíte mail -s subject [email protected] [email protected] <body
(pro odesílání, to jsou všechny záruky POSIX – a dokonce -s
za starých časů neexistovaly), mívají různé možnosti příkazového řádku. Přidání dalšího záhlaví není vždy snadné.
-
S nějakým
mailx
implementace, např. zmailutils
na Ubuntu nebo Debianubsd-mailx
, je to snadné, protože na to existuje možnost.mailx -a 'Content-Type: text/html' -s "Subject" [email protected] <test.html
-
S Heirloom
mailx
, neexistuje žádný pohodlný způsob. Jednou z možností vložení libovolných záhlaví je nastaveníeditheaders=1
a použijte externí editor (kterým může být skript).## 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"
-
S obecným POSIX
mailx
, nevím, jak se dostat do záhlaví.
Pokud budete používat jakoukoli mail
nebo mailx
, mějte na paměti, že
- Toto není přenosné ani v rámci dané distribuce Linuxu. Například Ubuntu i Debian mají několik alternativ pro
mail
amailx
. - Při psaní zprávy
mail
amailx
zpracovává řádky začínající~
jako příkazy. Pokud vložíte text domail
, musíte zajistit, aby tento text neobsahoval řádky začínající~
.
Pokud se přesto chystáte instalovat software, můžete také nainstalovat něco předvídatelnějšího než mail
/Mail
/mailx
. Například mutt. S Mutt můžete většinu záhlaví na vstupu dodat s -H
možnost, ale ne Content-Type
, kterou je třeba nastavit pomocí možnosti mutt.
mutt -e 'set content_type=text/html' -s 'hello' '[email protected]' <test.html
Nebo můžete vyvolat sendmail
přímo. Existuje několik verzí sendmail
tam venku, ale všechny podporují sendmail -t
odeslat e-mail tím nejjednodušším způsobem, přečtením seznamu příjemců z e-mailu. (Myslím, že ne všechny podporují Bcc:
.) Na většině systémů sendmail
není v obvyklé $PATH
, je v /usr/sbin
nebo /usr/lib
.
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: [email protected]
Subject: hello
Content-Type: text/html
EOF