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. demailutilsno 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=1e 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
mailxgeral, 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
mailemailx. - Ao compor uma mensagem,
mailemailxtratam 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