Forum général.général problème corps de message HTML et mailx, au secours !

Posté par . Licence CC by-sa.
Tags :
1
7
déc.
2018

Bonjour,

Je suis en train de perdre la boule. On utilise mailx pour envoyer des emails (bien sûr). Avec mailx, pas besoin de uuencode ou de commande sendmail complexe, on peut envoyer des pièces jointes avec l'option -a. C'est super !

Par contre, on essaye de faire passer des corps de mail au format HTML.

La simple commande :

cat toto.html | mailx -a piece.pdf -s "mon sujet" -c copie@toto.com.invalid destinaraire@toto.com.invalid

ça fonctionne mais le HTML n'est pas interprêté par le client mail : on lit le code HTML.

Je me dis pas grave, un coup de recherche google et c'est parti. Et bien non. On me propose :
- D'utiliser l'option '-a' pour envoyer le Content-Type mais bien entendu, ça marche pas. Elementaire, -a c'est pour envoyer des pièces jointes. Je me demande où ils ont été chercher ça
- D'utiliser sendmail directement avec une ligne de commande usine à gaz. On voudrait éviter ça, sachant que l'on envoit des pièces jointes et que l'on veut éviter uuencode

Avez vous une idée de faire simplement avec mailx pour définir le Content-Type en text/html ?

Merci

  • # Recherche qwant

    Posté par . Évalué à 1 (+0/-0).

    … à la place de google et le premier lien donne :
    https://stackoverflow.com/questions/24010230/mailx-send-html-message
    avec deux posts intéressants, dont la solution qui me semble valable ici : https://stackoverflow.com/a/27693507
    (NB : je n'ai pas mailx sur le serveur, je n'ai pas testé)

    • [^] # Re: Recherche qwant

      Posté par . Évalué à -3 (+1/-0).

      ça a l'air vachement compliqué pour changer le Content-Type avec mailx. Dommage car cet utilitaire est génial pour envoyer des pièces jointes.

  • # Respecter la norme

    Posté par (page perso) . Évalué à 4 (+2/-0).

    Le HTML n'est pas injecté directement dans un email. Il faut le faire précéder par un « Content-Type: text/html » (ou découper l'email en plusieurs sections, l'une d'entre elles étant du HTML).

    Probablement avec quelque chose du genre :

    ( echo "Content-Type: text/html"; cat toto.html ) | mail -a piece.pdf -s "mon sujet" -c copie@toto.com destinaraire@toto.com

    note : c'est bêtement ce qui est expliqué dans le lien qu'on t'a déjà donné au dessus. Si tu trouves que c'est compliqué d'ajouter un echo, il te faut un logiciel qui fonctionne en interface graphique :-)

    • [^] # Re: Respecter la norme

      Posté par . Évalué à -4 (+0/-0).

      Bon finalement ce n'est pas si simple car votre solution ne fonctionne pas :

      ( echo "Content-Type: text/html"; cat toto.html ) | mailx -a piece.pdf -s "mon sujet" -c copie@toto.com destinaraire@toto.com

      => Le HTML n'est toujours pas interprété.

      Une autre idée ?

      • [^] # Re: Respecter la norme

        Posté par (page perso) . Évalué à 2 (+0/-0).

        Une autre idée ?

        Regarder dans un email comment c'est fait, ou trouver quelque chose qui ressemble à une norme (aka RFC) pour gérer le HTML dans les emails.
        Ensuite, faire pareil :-)

      • [^] # Re: Respecter la norme

        Posté par . Évalué à 2 (+0/-0).

        => Le HTML n'est toujours pas interprété.

        Une autre idée ?

        • j'imagine evidemment que tu as configuré ton client email qui recoit l'email pour l'afficher en HTML ?

        • ne pas oublier de resepcter la "norme" qui consiste à envoyer l'email en multipart, avec la une partie contient l'email en texte pure, l'autre la contient au format html.

        sinon en 2014 il semblait possible de le faire avec certaines versions de mailx (from mailutils on Ubuntu or Debian's bsd-mailx, it's easy)

        mailx -a 'Content-Type: text/html' -s "my subject" user@gmail.com < email.html

        mais toutes les versions de mailx ne gere pas l'option -a de la meme maniere, apparemment heilroom-mailx ne semble pas le faire

        à toi donc de determiner quelle version

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.