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
mailximplementace, např. zmailutilsna 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=1a 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
mailamailx. - Při psaní zprávy
mailamailxzpracová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