Vous devez d'abord composer le message. Le strict minimum est composé de ces deux en-têtes :
MIME-Version: 1.0
Content-Type: text/html
... et le corps du message approprié :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
Une fois que vous l'avez, vous pouvez passer les informations appropriées à la commande mail :
body = '...'
echo $body | mail \
-a "From: [email protected]" \
-a "MIME-Version: 1.0" \
-a "Content-Type: text/html" \
-s "This is the subject" \
[email protected]
C'est un exemple trop simplifié, puisqu'il faut aussi s'occuper des jeux de caractères, des encodages, de la longueur maximale des lignes... Mais c'est en gros l'idée.
Alternativement, vous pouvez écrire votre script en Perl ou PHP plutôt qu'en shell simple.
Mettre à jour
Un script shell est essentiellement un fichier texte avec des fins de ligne Unix qui commence par une ligne appelée shebang qui indique au shell à quel interpréteur il doit transmettre le fichier, suivez certaines commandes dans la langue que l'interpréteur comprend et a l'autorisation d'exécution (sous Unix c'est un attribut de fichier). Par exemple, disons que vous enregistrez ce qui suit sous hello-world
:
#!/bin/sh
echo Hello, world!
Ensuite, vous attribuez l'autorisation d'exécution :
chmod +x hello-world
Et vous pouvez enfin l'exécuter :
./hello-world
Quoi qu'il en soit, cela n'a aucun rapport avec la question initiale. Vous devez vous familiariser avec les scripts shell de base avant d'effectuer des tâches avancées avec. Voici quelques liens sur bash , un shell populaire :
http://www.gnu.org/software/bash/manual/html_node/index.html
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
Jusqu'à présent, j'ai trouvé deux moyens rapides dans cmd linux
- Utilisez le courrier de la vieille école
mail -s "$(echo -e "This is Subject\nContent-Type: text/html")" [email protected] < mytest.html
- Utiliser clébard
mutt -e "my_hdr Content-Type: text/html" [email protected] -s "subject" < mytest.html
Les balises incluent "sendmail", alors voici une solution utilisant cela :
(
echo "From: [email protected] "
echo "To: [email protected] "
echo "MIME-Version: 1.0"
echo "Content-Type: multipart/alternative; "
echo ' boundary="some.unique.value.ABC123/server.xyz.com"'
echo "Subject: Test HTML e-mail."
echo ""
echo "This is a MIME-encapsulated message"
echo ""
echo "--some.unique.value.ABC123/server.xyz.com"
echo "Content-Type: text/html"
echo ""
echo "<html>
<head>
<title>HTML E-mail</title>
</head>
<body>
<a href='http://www.google.com'>Click Here</a>
</body>
</html>"
echo "------some.unique.value.ABC123/server.xyz.com--"
) | sendmail -t
Un wrapper pour sendmail peut faciliter ce travail, par exemple, mutt :
mutt -e 'set content_type="text/html"' [email protected] -s "subject" < message.html