SliTaz SliTaz Forum

You are not logged in.

#1 2025-04-13 09:14:37

Rantanplan
Member
Registered: 2022-06-06
Posts: 187

Envoyer un mail avec pièce(s) jointe(s) 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.

Pour cela nous aurons besoin d'installer cacerts...tazpkg et curl...tazpkg.

Dans SliTaz Rolling Core 5 en 1, base64 est disponible. S'il est absent de la version utilisée de SliTaz, installez-le.

Préparation de la ou des pièces jointes

Je suggère de commencer par la conversion de la ou des pièces jointes avant de compléter le fichier mail.txt.

Pour convertir un fichier avec base64, on saisit dans un terminal :

[c]base64 [fichier_à_convertir.ext] > [fichier_converti.base64][/c]

Le fichier converti contiendra uniquement des caractères ASCII.

Vous pouvez l'ouvrir avec votre éditeur de textes préféré, mais ne modifiez rien.

La syntaxe

Pour moi, puisque le serveur de messagerie sortant utilise SSL, elle est celle-ci :

[c]curl smtps://[serveur_smtp]:[port] --capath /etc/ssl/cacerts/ --mail-from "[expediteur@serveur.com]" --mail-rcpt "[destinataire@serveur.com]" --ssl-reqd -u "[utilisateur]:[mot_de_passe]" -T mail.txt[/c]

Note : le nom du fichier précisé après l'option -T est laissé à votre discrétion.

Texte du message en "plain text" et/ou "html"

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

Je vous présente ci-dessous les deux structures.

1 - Exemple de message en texte simple avec 2 pièces jointes

La structure du fichier mail.txt ressemblera à :

From: expediteur <expediteur@serveur.abc>

To: destinataire <destinataire@serveur.abc>

Subject: objet du mail

Date: Ddd, DD Mmm YYYY 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 # Copiez ici le contenu du fichier converti 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 # Copiez ici le contenu du fichier converti 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 <expediteur@serveur.abc>

To: destinataire <destinataire@serveur.abc>

Subject: objet du mail

Date: Ddd, DD Mmm YYYY 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 # Copiez ici le contenu du fichier converti avec base64

--__________separateur-multipart-mixed__________--

Liste non exhaustive de quelques "content-type"

[c]Type............Description.....................................Exemple de sous-type communément associé
-----------------------------------------------------------------------------------------------------
Texte...........Représente n'importe quel document
................contenant du texte et qui est...................text/javascript
................théoriquement lisible par un utilisateur........text/plain, text/html, text/css,
-----------------------------------------------------------------------------------------------------
Image...........Représente n'importe quelle image.
................Les vidéos ne font pas partie de ce type........image/bmp, image/webp,
................bien que les images animées tels les GIF........image/svg+xlm
................animés) font partie de ce type..................image/gif, image/png, image/jpeg,
-----------------------------------------------------------------------------------------------------
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
-----------------------------------------------------------------------------------------------------[/c]
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.

Recommandations

1- Si vous voulez réaliser des tests, ne vous privez surtout pas et partagez votre expérience.

Attention toutefois à ne pas 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.

2- La ligne qui précède et qui suit l'objet converti avec [c]base64[/c] doit IMPÉRATIVEMENT être vide, pas même un espace, seulement un retour à la ligne.

Astuces

1- La date du message peut être récupérée avec la commande [c]date -R[/c] qui la fournit au format mail.

2- Pour envoyer le mail à plusieurs destinataires, vous pouvez ajoutez :

dans la ligne de commande autant de :

[c]--mail-rcpt "[destinataire@serveur.com]"[/c]

et, dans le fichier mail.txt, la ligne "To: " autant de :

,destinataire <destinataire@serveur.abc>

qu'il y a de destinataires.

3- Vous ne voulez pas que le destinataire voit un ou plusieurs destinataires du mail qui lui est adressé ?

Dans ce cas, ne le faites pas apparaître dans le fichier mail.txt, mais uniquement dans la ligne de commande.

Amusez-vous bien !

Amitiés.

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.018 seconds, 7 queries executed - Memory usage: 1.54 MiB (Peak: 1.77 MiB) ]