Aller au contenu principal
Bienvenue sur Forum Puppy Linux - Toutou Linux - Astuces - Aides !
Lorsque vous n'êtes pas connectés vous pouvez visiter la totalité du forum mais avec certaines restrictions : cf le règlement pour les visiteurs non connectés. Vous êtes chaleureusement conviés à vous inscrire afin de bénéficier de toutes les fonctionnalités du forum et de participer aux échanges.
Sujet: Envoyer un mail & attachements en ligne de commande avec curl (Lu 1345 fois) sujet précédent - sujet suivant
0 Membres et 1 Invitédans ce sujet

Envoyer un mail & attachements en ligne de commande avec curl

Bonjour,

Si l'on peut lire ses mails grâce à curl, on peut aussi en expédier avec une ou plusieurs pièces jointes.

Ce sujet est purement théorique puisque je ne l'ai pas encore testé.

La syntaxe
curl smtps://[serveur_smtp]:[port] --mail-from "[expediteur@serveur.com]" --mail-rcpt "[destinataire@serveur.com]" --ssl -u "[utilisateur]:[mot_de_passe]" -T mail.txt (ou autre nom de son choix)


La théorie
Selon que l'on souhaite intégrer une version .html du message ou non, la structure du fichier mail.txt variera.

1 - Exemple de message en texte simple avec 2 pièces jointes
La structure du fichier mail.txt (ou un autre nom de votre choix) ressemblera à :

From: <expediteur@serveur.abc>
To: <destinataire@serveur.abc>
Subject: objet du mail
Date: Jjj, JJ Mmm AAAA hh:mm:ss +0[12]00]
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="__________separateur-multipart-mixed__________"

--__________separateur-multipart-mixed__________
Content-Type: text/plain;
 charset=utf-8 (ou autre charset de son choix)
Content-Transfer-Encoding: quoted-printable

Le corps du message

--__________separateur-multipart-mixed__________
Content-Type: [voir en fin de sujet quelques content-type possible] ;
 name="[nom_du_fichier.ext]"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="[nom_du_fichier.ext]"

objet codé avec base64

--__________separateur-multipart-mixed__________
Content-Type: [voir en fin de sujet quelques content-type possible] ;
 name="[nom_du_fichier.ext]"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="[nom_du_fichier.ext]"

objet codé avec base64

--__________separateur-multipart-mixed__________--



2 - Exemple de message au format texte et html avec 1 pièce jointe
La structure du fichier mail.txt (ou un autre nom de votre choix) ressemblera à :

From: <expediteur@serveur.abc>
To: <destinataire@serveur.abc>
Subject: objet du mail
Date: Jjj, JJ Mmm AAAA hh:mm:ss +0[12]00]
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="__________separateur-multipart-mixed__________"

--__________separateur-multipart-mixed__________
Content-Type: multipart/alternative; boundary="_____separateur_multipart_alternative_____"

--_____separateur_multipart_alternative_____
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

[MESSAGE EN TEXT/PLAIN]

--_____separateur_multipart_alternative_____
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<MESSAGE EN HTML>

--_____separateur_multipart_alternative_____--
--__________separateur-multipart-mixed__________
Content-Type: application/pdf;
 name="toto.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="toto.pdf"

objet codé avec base64

--__________separateur-multipart-mixed__________--



Liste non exhaustive de quelques "content-type"

Type          Description                                 Exemple de sous-type communément associé
-----------------------------------------------------------------------------------------------------------------
Texte         Représente n'importe quel document          text/plain,
              contenant du texte et qui est               text/html, text/css,
              théoriquement lisible par un utilisateur.   text/javascript
-----------------------------------------------------------------------------------------------------------------
Image         Représente n'importe quelle image.          image/png,
              Les vidéos ne font pas partie de ce type    image/jpeg, image/bmp,
              bien que les images animées tels les GIFs   image/svg+xlm
              animés) font partie de ce type. image/gif,  image/webp
-----------------------------------------------------------------------------------------------------------------
Audio         Représente n'importe quel fichier audio.    audio/midi, audio/mpeg,
                                                          audio/webm, audio/ogg, audio/wav
-----------------------------------------------------------------------------------------------------------------
Video         Représente n'importe quel fichier vidéo.    video/webm, video/ogg
-----------------------------------------------------------------------------------------------------------------
Application   Représente n'importe quelle donnée binaire. application/octet-stream, application/pkcs12,
                                                          application/vnd.mspowerpoint, application/xhtml+xml,
                                                          application/xml, application/pdf
-----------------------------------------------------------------------------------------------------------------

Avec gmail
Si vous utilisez gmail, peut-être devrez-vous activer l’accès IMAP à votre compte Gmail.
Pour ce faire, accédez à l’interface Web de Gmail, cliquez sur l’icône « rouage » dans le coin supérieur droit, puis sélectionnez "Voir tous les paramètres".
Dans les "Paramètres de Gmail", cliquez sur l’onglet "POP/IMAP" et activez la case d’option à côté de "Activer IMAP". Enregistrez vos paramètres.

Recommandation
Si vous voulez réaliser des tests, ne vous privez surtout pas et partagez votre expérience.
Attention toutefois à ne multiplier inconsidérement l'envoi de messages de test : vous pourriez être assimilé à un "spameur" et interdit d'expédition de courriers électroniques pendant une durée plus ou moins longue.

Amusez-vous bien !


EDIT 20250405
Testé ce qui précède ce jour avec SUCCÈS.
Attention, la ligne qui précède et celle qui suit l'objet expédié codé avec base64 doivent IMPÉRATIVEMENT être vide, càd pas d'espace(s) parasite(s) ou autre.
Ne riez pas, ça m'est arrivé.

EDIT 20250411
Vous souhaitez envoyer votre mail à plusieurs destinataires ?
Dans la commande curl, ajoutez un :
--mail-rcpt ["destinataire2@serveur.com"]
et dans le fichier mail.txt, placez-le à la suite du 1er destinataire. Mettez une virgule entre les deux.
Si vous voulez que le destinataire principal ne voit pas un des destinataires, omettez-le dans le fichier mail.txt.
Vive Toutou Linux
"Tout le monde a le droit de vivre en paix !" dit une dame africaine.

 
Simple Audio Video Embedder