GNU/Linux >> Tutoriels Linux >  >> Linux

Envoi de courrier HTML à l'aide d'un script shell

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

  1. Utilisez le courrier de la vieille école

mail -s "$(echo -e "This is Subject\nContent-Type: text/html")" [email protected] < mytest.html

  1. 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

Linux
  1. Comportement inattendu d'un script shell ?

  2. Modifier le script shell pendant son exécution

  3. Script bash :utilisation de la commande de script d'un script bash pour la journalisation d'une session

  4. Est-il possible de créer des dossiers de manière récursive à l'aide d'un script shell ?

  5. Connexion au WiFi à l'aide du shell adb

Comprendre facilement les commandes Shell à l'aide du script "Explain Shell" sous Linux

Comment créer un utilisateur sur une instance Linux EC2 sur AWS et y ajouter une clé publique à l'aide d'un script shell

Bibliothèque de sortie de script shell coloré

Comment insérer une nouvelle ligne dans le script shell Linux ?

Obtenir l'adresse MAC à l'aide du script shell

Calcul du pourcentage arrondi dans Shell Script sans utiliser bc