mail -s "subject" [email protected] <test.html
funziona, ma solo per e-mail di testo normale.
Qual è il modo corretto per inviare e-mail HTML utilizzando il comando Linux mail
?
Risposta accettata:
Esistono molte versioni differenti di mail
intorno a. Quando vai oltre mail -s subject [email protected] [email protected] <body
(per l'invio, sono tutte garanzie POSIX e persino -s
non esisteva ai vecchi tempi), tendono ad avere diverse opzioni della riga di comando. Aggiungere un'intestazione aggiuntiva non è sempre facile.
-
Con alcuni
mailx
implementazioni, ad es. damailutils
subsd-mailx
di Ubuntu o Debian , è facile, perché c'è un'opzione per questo.mailx -a 'Content-Type: text/html' -s "Subject" [email protected] <test.html
-
Con Heirloom
mailx
, non esiste un modo conveniente. Una possibilità per inserire intestazioni arbitrarie è impostareeditheaders=1
e usa un editor esterno (che può essere uno script).## 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"
-
Con un POSIX
mailx
generale , non so come arrivare alle intestazioni.
Se hai intenzione di utilizzare qualsiasi mail
o mailx
, tieni presente che
- Questo non è portabile nemmeno all'interno di una determinata distribuzione Linux. Ad esempio, sia Ubuntu che Debian hanno diverse alternative per
mail
emailx
. - Durante la composizione di un messaggio,
mail
emailx
tratta le righe che iniziano con~
come comandi. Se inserisci il testo inmail
, devi fare in modo che questo testo non contenga righe che iniziano con~
.
Se hai comunque intenzione di installare il software, potresti anche installare qualcosa di più prevedibile di mail
/Mail
/mailx
. Ad esempio, bastardino. Con Mutt, puoi fornire la maggior parte delle intestazioni nell'input con -H
opzione, ma non Content-Type
, che deve essere impostato tramite un'opzione mutt.
mutt -e 'set content_type=text/html' -s 'hello' '[email protected]' <test.html
Oppure puoi invocare sendmail
direttamente. Esistono diverse versioni di sendmail
là fuori, ma supportano tutti sendmail -t
per inviare una mail nel modo più semplice, leggendo l'elenco dei destinatari dalla posta. (Penso che non tutti supportino Bcc:
.) Sulla maggior parte dei sistemi, sendmail
non è nel solito $PATH
, è in /usr/sbin
o /usr/lib
.
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: [email protected]
Subject: hello
Content-Type: text/html
EOF