mail -s "subject" [email protected] <test.html
fonctionne, mais uniquement pour les e-mails en texte brut.
Quelle est la bonne façon d'envoyer un courrier électronique HTML à l'aide de la commande Linux mail
?
la source
mail -s "subject" [email protected] <test.html
fonctionne, mais uniquement pour les e-mails en texte brut.
Quelle est la bonne façon d'envoyer un courrier électronique HTML à l'aide de la commande Linux mail
?
Il existe de nombreuses versions différentes mail
autour. Lorsque vous allez au-delà mail -s subject to1@address1 to2@address2 <body
(pour l’envoi, c’est toutes les garanties POSIX - et -s
n’existait même pas à l’ époque ), ils ont généralement des options de ligne de commande différentes. Ajouter un en-tête supplémentaire n'est pas toujours facile.
Avec certaines mailx
implémentations, par exemple à partir mailutils
sur Ubuntu ou Debian debsd-mailx
, il est facile, car il y a une option pour cela.
mailx -a 'Content-Type: text/html' -s "Subject" to@address <test.html
Avec le Heirloom mailx
, il n'y a pas de moyen pratique. Une possibilité d'insérer des en-têtes arbitraires est de définir editheaders=1
et d'utiliser un éditeur externe (qui peut être un 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"
Avec un POSIXmailx
général , je ne sais pas comment accéder aux en-têtes.
Si vous voulez utiliser mail
ou mailx
, gardez à l’esprit que
mail
et mailx
.mail
il mailx
traite les lignes commençant par des ~
commandes. Si vous faites suivre le texte mail
, vous devez vous assurer que ce texte ne contient pas de lignes commençant par ~
.De toute façon, si vous souhaitez installer un logiciel, vous pouvez également installer quelque chose de plus prévisible que mail
/ Mail
/ mailx
. Par exemple, mutt . Avec Mutt, vous pouvez fournir la plupart des en-têtes de l'entrée avec l' -H
option, mais pas celle-ciContent-Type
, qui doit être définie via une option mutt.
mutt -e 'set content_type=text/html' -s 'hello' 'to@address' <test.html
Ou vous pouvez invoquer sendmail
directement. Il existe plusieurs versions de sendmail
là-bas, mais ils prennent tous en charge l' sendmail -t
envoi d'un courrier de la manière la plus simple, en lisant la liste des destinataires à partir du courrier. (Je pense qu'ils ne supportent pas tous Bcc:
.) Sur la plupart des systèmes, ce sendmail
n'est pas comme d'habitude $PATH
, c'est dans /usr/sbin
ou /usr/lib
.
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: to@address
Subject: hello
Content-Type: text/html
EOF
la source
mail
.Heirloom mailx est un moyen pratique de
Merci, Dude
Testé sur Fedora 17, et a travaillé
la source
Pour ce faire, vous devrez ajouter un en-
Content-Type
tête à votre courrier électronique.marchera
la source
mailx
? Cela pourrait avoir l'option. Si ça ne marche pas. Si cela ne fonctionne pas, vous pouvez envisager d'utiliser mutt bien que je ne sache pas ce que la ligne de commande permet de faire.Avec heirloom-mailx, vous pouvez remplacer le programme sendmail par votre script de hook, remplacer les en-têtes et utiliser sendmail.
Le script que j'utilise (
~/bin/sendmail-mailx-hook
):Ce script modifie les valeurs dans l'en-tête du courrier comme suit:
Content-Type:
àtext/html; charset=utf-8
Content-Transfer-Encoding:
à8bit
(pas sûr si cela est vraiment nécessaire).Pour envoyer un email HTML:
Cette méthode est plus efficace que celle proposée par @Gilles car elle ne crée pas de fichiers temporaires et ne fait que réparer le flux à la volée.
la source
J'ai utilisé les scripts ci-dessous pour arriver
la source
Pour moi, je devais spécifier une variable telle que le serveur SMTP, la commande mail fonctionnait ainsi. J'ai cherché dans de nombreux articles et j'ai trouvé ci-dessous une propriété permettant de convertir le corps en texte / html. Maintenant, l'email que je reçois est au format HTML.
Version Unix: Red Hat Enterprise Linux Server version 6.6 (Santiago)
Première. Créez toutes les informations nécessaires dans un script (testSql.sh)
Seconde. Pipe ce script à la commande mail
En faisant cela, je reçois les informations ci-dessous dans le courrier électronique:
Value1 et Value2 selon le balisage HTML effectué dans le testSql.sh
la source
la source