3 votes

Envoyer un simple courriel HTML à partir d'une ligne de commande ?

J'ai une tâche cron qui produit une liste de ressources, la date d'expiration et les jours jusqu'à l'expiration. Le rapport produit un fichier CSV. Je joins ce fichier à un message en utilisant mutt -a report.csv .

Je veux également inclure des informations dans le corps du courriel. J'utilise gawk pour formater ces informations en lignes épurées et les ajouter au corps du message. Cela ressemble à quelque chose comme ceci :

Resource                                 Expiration Date           Days  
======================================== ========================= ========

resource one                             Oct 11 2009 07:59 PM      3    
resource two                             Nov  3 2009 07:59 PM      22     
resource three has a longer name         Nov  6 2009 07:59 PM      28     
rscrc 4                                  Dec  8 2009 07:59 PM      58     
you get the point                        Dec 17 2009 07:59 PM      66     
www.blockbuster1.smartsubs.net           Dec 23 2009 07:59 PM      70     

(oui, j'ai truqué les dates et l'expiration, elles ne s'additionnent pas dans cet exemple)

Le problème est que la plupart des destinataires n'ont pas leur client de messagerie configuré pour afficher les messages en texte brut avec une police de largeur fixe. Donc, pour eux, cela ressemble à ceci :

Date d'expiration de la ressource Jours
\======================================== ========================= ========

ressource un 11 Oct 2009 07:59 PM 3
ressource deux Nov 3 2009 07:59 PM 22
la ressource trois a un nom plus long Nov 6 2009 07:59 PM 28
rscrc 4 Dec 8 2009 07:59 PM 58
vous comprenez le point 17 déc 2009 07:59 PM 66
www.blockbuster1.smartsubs.net 23 déc 2009 07:59 PM 70

Y a-t-il des suggestions sur la façon de formater facilement ce texte dans un courriel afin qu'il soit forcé d'utiliser une police de largeur fixe ? J'ai la possibilité d'installer de nouveaux outils de ligne de commande sur ce serveur.

2voto

jammus Points 1796

Si vous avez une version suffisamment récente de mutt, je crois que vous pouvez faire quelque chose comme ça.

mutt -e 'set content_type="text/html"' -a file.csv user@example.org -s "subject" < index.html

index.html sera le corps html de votre message.

0 votes

Argh - Error in command line: content_type: unknown variable

0 votes

Quelle version de mutt avez-vous ? J'ai mutt 1.5.18 sur une Ubuntu.

0 votes

Je viens d'installer une version plus récente. Elle fonctionne. Accepté.

1voto

Kyle Brandt Points 81077

Je dirais qu'il suffit de construire un tableau html en utilisant des instructions d'impression, c'est un peu compliqué mais ça marche, je l'ai déjà fait.

Un moyen moins compliqué serait d'utiliser un convertisseur de tableau csv vers html. En voici un avec awk . Vous pouvez alors simplement envoyer à la fois le html et le texte en clair, et leur lecteur doit utiliser. Vous devrez chercher comment faire cela avec la bibliothèque/le programme de messagerie que vous utilisez.

Quoi qu'il en soit, j'opterais pour les tableaux plutôt que d'essayer de forcer l'utilisation d'une police à largeur fixe. Je pense que le tableau serait plus cohérent (je n'ai pas de preuve réelle de cela cependant).

1 votes

Ne devrais-je pas également modifier l'en-tête mime-type (et éventuellement d'autres) ? Ou bien la plupart des clients de messagerie affichent-ils le HTML sans tenir compte des en-têtes ?

0 votes

Doug : Probablement, je n'y connais pas grand chose. Vous pourriez poster une question spécifique sur stackoverflow en plus de ce post.

0 votes

Je viens de tester en utilisant pre et p style="font-family:courier" et dans les deux cas, les balises HTML sont apparues sous forme de texte brut.

0voto

Jochen Points 685

Ne pourriez-vous pas envelopper le tout avec un élément p et un style en ligne défini pour une police monospace et un espacement préformaté ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X