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 :
base64 [fichier_à_convertir.ext] > [fichier_converti.base64]
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 :
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
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-printableLe 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"
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
-----------------------------------------------------------------------------------------------------
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 base64
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 date -R
qui la fournit au format mail.
2- Pour envoyer le mail à plusieurs destinataires, vous pouvez ajoutez :
dans la ligne de commande autant de :
--mail-rcpt "[destinataire@serveur.com]"
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.