Existem muitas versões diferentes de mail
ao redor. Quando você for além de mail -s subject to1@address1 to2@address2 <body
(para envio, isso é tudo que garante POSIX - e até -s
não existiam nos dias antigos ), eles tendem a ter opções de linha de comando diferentes. Adicionar um cabeçalho adicional nem sempre é fácil.
-
Com algumas implementações de
mailx
, por ex. demailutils
no Ubuntu ou Debianbsd-mailx
, é fácil, porque há uma opção para isso.mailx -a 'Content-Type: text/html' -s "Subject" to@address <test.html
-
Com o Herança
mailx
, não há maneira conveniente. Uma possibilidade de inserir cabeçalhos arbitrários é definireditheaders=1
e usar um editor externo (que pode ser um 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" to@address <<EOF ~e . EOF rm -f "$temp_script"
-
Com um POSIX
mailx
geral, não sei como nos cabeçalhos.
Se você for usar qualquer mail
ou mailx
, lembre-se de que
- Isso não é portátil nem dentro de uma determinada distribuição do Linux. Por exemplo, tanto o Ubuntu quanto o Debian possuem várias alternativas para
mail
emailx
. - Ao compor uma mensagem,
mail
emailx
tratam as linhas que começam com~
como comandos. Se você canalizar o texto paramail
, será necessário que esse texto não contenha linhas que comecem com~
.
Se você for instalar o software mesmo assim, é melhor instalar algo mais previsível que mail
/ Mail
/ mailx
. Por exemplo, mutt . Com o Mutt, você pode fornecer a maioria dos cabeçalhos na entrada com a opção -H
, mas não Content-Type
, que precisa ser definido por meio de uma opção mutt.
mutt -e 'set content_type=text/html' -s 'hello' 'to@address' <test.html
Ou você pode invocar sendmail
diretamente. Existem várias versões de sendmail
por aí, mas todas elas suportam sendmail -t
para enviar um e-mail da maneira mais simples, lendo a lista de destinatários pelo correio. (Acho que nem todos suportam Bcc:
.) Na maioria dos sistemas, sendmail
não está no usual $PATH
, em /usr/sbin
ou /usr/lib
.
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: to@address
Subject: hello
Content-Type: text/html
EOF