Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

envoyer par ligne de commande un mail en HTML5 avec ou sans attachements

23 réponses
Avatar
=?utf-8?q?basile=40starynkevitch=2Enet?=
------=_=-_OpenGroupware_org_NGMime-9017-1568731244.554217-36------
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Length: 2018


Bonjour

Dans mon projet Bismon (GPLv3+, pas encore dans Debian) en http://githu=
b.com/bstarynk/bismon/ j'ai besoin d'envoyer programmatiquement un cour=
riel avec deux cas de figures:

un corps en HTML5, un destinataire, un CC optionel, sans attachements

un corps en HTML5, un destinataire, un CC optionel, un fichier attach=C3=
=A9.

Le premier cas sert =C3=A0 implementer la fonction "forgotten password"=
d'un service web specialis=C3=A9. J'utilise /usr/bin/mail dans sa vari=
ante BSD.

Le second cas sert =C3=A0 impl=C3=A9menter d'autres fonctionalit=C3=A9s=
. Le fichier attach=C3=A9 serait le plus souvent du code C, ou la sorti=
e d'une compilation, ou un fichier .tar.gz et dans ce cas j'utilise=C2=A0=
/usr/bin/mail.mailutils


Generalement, le message SMTP ainsi automatiquement =C3=A9mis serait pe=
tit: une centaine de kilo-octets, et tr=C3=A8s souvent juste quelques c=
entaines d'octets.

Le script Guile qui g=C3=A8re =C3=A7a est send-bismon-html-email.scm et=
je travaille (tristement) dans un organisme public (le CEA/LIST) o=C3=B9=
l'envoi de message automatique internes (de mon PC dans mon bureau pie=
ce 1017 =C3=A0 NanoInnov vers mon adresse email professionnelle basile.=
starynkevitch@cea.fr donc sur l'intranet seulement) semble =C3=AAtre in=
terdit. Int=C3=A9rieurement je me dit que le CEA marche sur la t=C3=AAt=
e aux frais du contribuable europ=C3=A9en ou fran=C3=A7ais. (j'ai pass=C3=
=A9 une semaine de boulot tr=C3=A8s chiant =C3=A0 me plier sans la cont=
ourner =C3=A0 cette r=C3=A8gle que je crois d=C3=A9bile; =C3=A7a me ren=
d de tr=C3=A8s mauvaise humeur).

J'ai donc actuellement (dans mon commit 73c5202a1157d4120ee) le code su=
ivant


(define bm-simple-mail-program "/usr/bin/mail")
(define bm-attached-mail-program "/usr/bin/mail.mailutils")


mais connaissez vous mieux en ligne de commande?

Merci!


--
Basile Starynkevitch http://starynkevitch.net/Basile/
les opinions ici sont seulement les miennes, mon employeur ne les appro=
uverait pas!

------=_=-_OpenGroupware_org_NGMime-9017-1568731244.554217-36------
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Content-Length: 2723

<html>Bonjour<br /><br />Dans mon projet Bismon (GPLv3+, pas encore dan=
s Debian) en http://github.com/bstarynk/bismon/ j'ai besoin d'envoyer p=
rogrammatiquement un courriel avec deux cas de figures:<br /><br />un c=
orps en HTML5, un destinataire, un CC optionel, sans attachements<br />=
<br />un corps en HTML5, un destinataire, un CC optionel, un fichier at=
tach=C3=A9.<br /><br />Le premier cas sert =C3=A0 implementer la foncti=
on "forgotten password" d'un service web specialis=C3=A9. J'utilise <sp=
an style=3D"font-family:Courier New,Courier,monospace;">/usr/bin/mail</=
span> dans sa variante BSD.<br /><br />Le second cas sert =C3=A0 impl=C3=
=A9menter d'autres fonctionalit=C3=A9s. Le fichier attach=C3=A9 serait =
le plus souvent du code C, ou la sortie d'une compilation, ou un fichie=
r <span style=3D"font-family:Courier New,Courier,monospace;">.tar.gz </=
span>et dans ce cas j'utilise&nbsp; <span style=3D"font-family:Courier =
New,Courier,monospace;">/usr/bin/mail.mailutils</span><br /><br /><br /=
>Generalement, le message SMTP ainsi automatiquement =C3=A9mis serait p=
etit: une centaine de kilo-octets, et tr=C3=A8s souvent juste quelques =
centaines d'octets.<br /><br />Le script Guile qui g=C3=A8re =C3=A7a es=
t <a href=3D"https://github.com/bstarynk/bismon/blob/master/send-bismon=
-html-email.scm">send-bismon-html-email.scm</a> et je travaille (triste=
ment) dans un organisme public (le CEA/LIST) o=C3=B9 l'envoi de message=
automatique internes (de mon PC dans mon bureau piece 1017 =C3=A0 Nano=
Innov vers mon adresse email professionnelle <span style=3D"font-family=
:Courier New,Courier,monospace;">basile.starynkevitch@cea.fr</span> don=
c sur l'<u>intranet</u> seulement) semble =C3=AAtre interdit. Int=C3=A9=
rieurement je me dit que le CEA marche sur la t=C3=AAte aux frais du co=
ntribuable europ=C3=A9en ou fran=C3=A7ais. (j'ai pass=C3=A9 une semaine=
de boulot tr=C3=A8s chiant =C3=A0 me plier sans la contourner =C3=A0 c=
ette r=C3=A8gle que je crois d=C3=A9bile; =C3=A7a me rend de tr=C3=A8s =
mauvaise humeur).<br /><br />J'ai donc actuellement (dans mon commit <s=
pan style=3D"font-family:Courier New,Courier,monospace;">73c5202a1157d4=
120ee</span>) le code suivant<br /><br /><br /><span style=3D"font-fami=
ly:Courier New,Courier,monospace;">(define bm-simple-mail-program "/usr=
/bin/mail")<br />(define bm-attached-mail-program "/usr/bin/mail.mailut=
ils")</span><br /><br /><br />mais connaissez vous mieux en ligne de co=
mmande?<br /><br />Merci!<br /><br /><br />--<br />Basile Starynkevitch=
http://starynkevitch.net/Basile/<br />les opinions ici sont seulement =
les miennes, mon employeur ne les approuverait pas!</html>

------=_=-_OpenGroupware_org_NGMime-9017-1568731244.554217-36--------

10 réponses

1 2 3
Avatar
Daniel Caillibaud
Le 17/09/19 à 16:40, t> a écrit :
Le script Guile qui gère ça est send-bismon-html-email.scm et j e travaille (tristement) dans
un organisme public (le CEA/LIST) où l'envoi de message automatique internes (de mon PC dans
mon bureau piece 1017 à NanoInnov vers mon adresse email professionn elle
donc sur l'intranet seulement) semble êt re interdit.
Intérieurement je me dit que le CEA marche sur la tête aux frai s du contribuable européen ou
français.

Non, c'est le contraire qui ne serait pas sérieux.
Tout envoi de mail depuis un PC devrait l'être via un smtp authentifi é (je parles pas des
applis hébergées mais bien de programmes tournant sur les PC des utilisateurs).
Donc tu devrais plutôt utiliser une lib qui fait du smtp, et indiquer dans les paramètres de
ton appli un compte smtp qui peut envoyer du mail (ça peut être l e tien pour ton dev local si
tu veux tester les envois de mails).
Ou alors une passerelle chez qui tu es connu et qui accepte de relayer ton courrier (mais la
solution smtp est plus universelle et plus simple à maintenir).
--
Daniel
Il paraît qu'il y a une femme qui donne naissance à un enfant
toutes les deux secondes.
Il faut absolument la trouver pour l'empêcher de continuer !
Coluche
Avatar
fab
'lut,
solution smtp est plus universelle et plus simple à maintenir).

J'utiliserais plutôt smtps.
f.
Avatar
Daniel Caillibaud
Le 17/09/19 à 17:14, "ajh-valmer" a écrit :
On Tuesday 17 September 2019 16:40:44 wrote:
Dans mon projet Bismon (GPLv3+, pas encore dans Debian) en
http://github.com/bstarynk/bismon/ j'ai besoin d'envoyer programmatique ment
un courriel avec deux cas de figures:
un corps en HTML5, un destinataire, un CC optionel, sans attachements
un corps en HTML5, un destinataire, un CC optionel, un fichier attach é.
mais connaissez vous mieux en ligne de commande?

En PHP5 ce serait plus adapté, ce langage est fait pour ça.

php 5 n'est plus maintenu depuis longtemps, on en est à php7.3.
Nécessité d'installer un serveur Web (Apache ou Nginx).

Pas forcément, php fonctionne très bien en cli.
Sans doute qu'en HTML5, pas besoin d'un serveur,
mais sécurité en bémol.

Pas compris.
Mais ça ne règlera pas le pb initial qui est que le PC ne peut pa s envoyer de mail
via son binaire local (/bin/mail ou sendmail ou …), car la fonction mail de php l'utilisera
aussi (je suppose que ce sont les connexions aux ports 25 distants qui sont bloquées sur le
lan de Basile).
Pour que ça fonctionne en php il faudra utiliser une classe php qui g ère des dialogue avec
un serveur smtp (avec ou sans ssl, si le smtp est sur le lan le ssl est pas forcément
indispensable), donc autant utiliser une lib smtp dans le langage du progra mme source de
l'envoi.
--
Daniel
Qui n'a pas recherché la vérité, n'a bien sûr jamais co mmis d'erreurs.
M. Saltykov-Chtehedrine
Avatar
Daniel Caillibaud
Le 17/09/19 à 17:17, fab a écrit :
'lut,
solution smtp est plus universelle et plus simple à maintenir).

J'utiliserais plutôt smtps.

C'est pareil vu du programme qui envoie (à priori la même lib, av ec ou sans ssl dans les
paramètres de connexion), et c'est pas forcément indispensable si le smtp est sur le lan (ça
ne protège des écoutes indiscrètes que sur la partie client< ->smtp de départ).
Car ssl ou pas, tant qu'un mail n'est pas chiffré il est lisible en cl air par qqun qui peut
écouter le réseau au bon endroit ou qui a un accès à un e des passerelles de filtrage
(antivirus/antispam & co).
Car même si ton client mail dialogue avec ton smtp en ssl pour envoyer un mail, rien ne garanti
que la connexion restera chiffrée jusqu'au MX du domaine de destinatio n (ton smtp peut très
bien se connecter sans ssl sur le port 25 du MX de destination, ça d épend de leur configuration
à tous les deux).
--
Daniel
A force d’accepter l’inacceptable, on en vient à croir e que c’est la norme.
Jeune prof démissionnaire cité par mediapart le 22/03/2012
Avatar
ajh-valmer
On Tuesday 17 September 2019 20:01:34 Daniel Caillibaud wrote:
Le 17/09/19 à 17:14, a écrit :
En PHP5 ce serait plus adapté, ce langage est fait pour ça.

php 5 n'est plus maintenu depuis longtemps, on en est à php7.3 :

Coquille, je voulais écrire simplement php.
Nécessité d'installer un serveur Web (Apache ou Nginx).

Pas forcément, php fonctionne très bien en cli :

Les modules PHP sont sur le serveur Web.
C'est le navigateur qui est client.
Sans doute qu'en HTML5, pas besoin d'un serveur,
mais sécurité en bémol :

Pas compris.

Je posais la question si php était plus sécurisé que html5,
langage navigateur.
Je savais pas que html5 pouvait gérer l'envoi de mails,
le formulaire oui, mais l'envoi aussi ?
Sans doute avec la commande mail en mode console..
Mais ça ne règlera pas le pb initial qui est que le PC
ne peut pas envoyer de mail
via son binaire local (/bin/mail ou sendmail ou …),
car la fonction mail de php l'utilisera
aussi (je suppose que ce sont les connexions aux ports 25 distants
qui sont bloquées sur le lan de Basile).
Pour que ça fonctionne en php il faudra utiliser une classe php qui gère
des dialogue avec un serveur smtp (avec ou sans ssl, si le smtp est sur le
lan le ssl est pas forcément indispensable), donc autant utiliser un e lib
smtp dans le langage du programme source de l'envoi.

Pour que php puisse envoyer des mails,
il faut aussi un serveur de messagerie (postfix ou sendmail...).
Il n'y a pas de serveur smtp, il est incorporé dans le serveur de mail s,
pas le pop, réception (service à installer, tel dovecot...).
Je préconisais un serveur Web avec les modules php, un serveur de mess agerie,
mais si c'est possible en html5...
Avatar
Basile Starynkevitch
Mais ça ne règlera pas le pb initial qui est que le PC ne peut pas envoyer de mail
via son binaire local (/bin/mail ou sendmail ou …), car la fonction mail de php l'utilisera
aussi (je suppose que ce sont les connexions aux ports 25 distants qui sont bloquées sur le
lan de Basile).

Elles ne sont pas bloquées. Elles me sont interdites par une
réglementation interne stupide. Techniquement, je peux installer un
postfix local, et je sais le faire.
Si je le faisais sans autorisation, personne ne me dirais rien..... Mais
avec l'âge je deviens parano.
Et au siècle dernier, j'étais autorisé à ce faire. J'ai même configuré
moi-même le sendmail d'un serveur Sun.
Il n'y a qu'a googler mon adresse email de l'époque:
: c'est moi qui avait configuré -on m'avait
donné l'ordre oral- le sendmail (oui, oui....) sur le SunOS3.5 qui
tournait sur soleil.serma.cea.fr
Contexte social supplémentaire: il y a eu il y a 12 ou 15 mois,
exactement comme c'est arrivé chez France Telecom il y a 10 ans, une
tentative de suicide dans mon bâtiment. Liée au travail. Risque Psycho
Social, selon la terminologie.
Le parallèle entre la situation du CEA/LIST (au business model
actuellement intenable) et celle de France Télécom il y a 10 ans (avec
son PDG d'alors actuellement devant les tribunaux) est frappant pour la
plupart de mes camarades syndiqués. Et pour la Cour des Comptes aussi....
Librement
--
Basile STARYNKEVITCH == http://starynkevitch.net/Basile
opinions are mine only - les opinions sont seulement miennes
Bourg La Reine, France;
(mobile phone: cf my web page / voir ma page web...)
Avatar
Yves Rutschle
On Tue, Sep 17, 2019 at 08:47:09PM +0200, ajh-valmer wrote:
Pas forcément, php fonctionne très bien en cli :

Les modules PHP sont sur le serveur Web.
C'est le navigateur qui est client.

En 'cli'. CLI. Command Line Interface.
Installer un serveur Web comme solution pour envoyer des
mails, c'est créatif.
Je savais pas que html5 pouvait gérer l'envoi de mails,
le formulaire oui, mais l'envoi aussi ?
Sans doute avec la commande mail en mode console..

html5 est un langage statique de description de document. Il
ne fait rien. La question d'origine est d'envoyer des mails
contenant un corps en HTML5. Envoyer un document par mail,
quoi.
Y.
Avatar
Yves Rutschle
On Tue, Sep 17, 2019 at 04:40:44PM +0200, wrote:
Le script Guile qui gère ça est send-bismon-html-email.scm et je travaille (tristement) dans un organisme public (le CEA/LIST) où l'envoi de message automatique internes (de mon PC dans mon bureau piece 1017 à NanoInnov vers mon adresse email professionnelle donc sur l'intranet seulement) semble être interdit. Intérieurement je me dit que le CEA marche sur la tête aux frais du contribuable européen ou français. (j'ai passé une semaine de boulot très chiant à me plier sans la contourner à cette règle que je crois débile; ça me rend de très mauvaise humeur).

Au final, je comprend ce que tu veux faire fonctionnellement
(envoyer un mail depuis ton programme), mais pas ce qui est
autorisé ou interdit ni comment c'est interdit.
Si je ne m'abuse, /usr/bin/mail ne fait que relayer au
MTA local, c.a.d Postfix, Exim, ou ssmtp. Dans la mesure où
tu es sur du LAN, je seconde l'opinino de ssmtp, ou d'Exim
en version 'smarthost' (je crois que l'installeur Debian
appelle ça 'satellite'), où le MTA local ne fait que passer
le mail à un MTA complet.
Ici, tu configurerais donc ssmtp ou Exim pour se logguer sur
ton serveur mail avec ton login et mot de passe, et lorsque
/usr/bin/mail est appelé il passerait le mail à ssmtp, qui
le transfèrerait au MTA de ton labo.
mais connaissez vous mieux en ligne de commande?

Pour attacher des fichiers, je me souviens avoir utilisé
mutt, mais je pense que le fond du problème n'est pas là.
Y.
Avatar
fab
merci Daniel pour toutes ces précisions.
Tu dis que sur un lan, le ssl n'est pas forcément indispensable pour
aller sur le 1er smtp local. Quand même, sur de nombreux lan, des
machines arrivent et sortent et demain des objets connectés... Avant, on
se disait ( enfin, je me disais ;) ) : le LAN est secure et on se
protège du WAN. Maintenant, j'aurai plutôt tendance à dire, chaque
serveur est un petit bastion et doit se protéger de tous, y compris des
objets de son LAN. Mais je suis peut-être devenu un brin parano ?
Une question que je me pose: lorsqu'on dit chiffrement des mails avec
postfix, j'ai l'impression qu'on parle toujours de chiffrement des
connexions avec ssl. Mais si on veut faire le chiffrement des mails
_sur_ le serveur ou tourne postfix - ie pour que les adminsys ne
puissent pas lire les mails en clair - , emploie t-on le même
vocabulaire ? postfix a t-il un "plugin" pour chiffrer les mails ou
alors faut-il se tourner vers d'autres outils ?
Merci et bonne journée,
f.
Le 17/09/2019 à 20:12, Daniel Caillibaud a écrit :
Le 17/09/19 à 17:17, fab a écrit :
'lut,
solution smtp est plus universelle et plus simple à maintenir).


J'utiliserais plutôt smtps.

C'est pareil vu du programme qui envoie (à priori la même lib, avec ou sans ssl dans les
paramètres de connexion), et c'est pas forcément indispensable si le smtp est sur le lan (ça
ne protège des écoutes indiscrètes que sur la partie client<->smtp de départ).
Car ssl ou pas, tant qu'un mail n'est pas chiffré il est lisible en clair par qqun qui peut
écouter le réseau au bon endroit ou qui a un accès à une des passerelles de filtrage
(antivirus/antispam & co).
Car même si ton client mail dialogue avec ton smtp en ssl pour envoyer un mail, rien ne garanti
que la connexion restera chiffrée jusqu'au MX du domaine de destination (ton smtp peut très
bien se connecter sans ssl sur le port 25 du MX de destination, ça dépend de leur configuration
à tous les deux).
Avatar
Daniel Caillibaud
Le 18/09/19 à 09:47, fab a écrit :
Une question que je me pose: lorsqu'on dit chiffrement des mails avec
postfix, j'ai l'impression qu'on parle toujours de chiffrement des
connexions avec ssl. Mais si on veut faire le chiffrement des mails
_sur_ le serveur ou tourne postfix - ie pour que les adminsys ne
puissent pas lire les mails en clair - , emploie t-on le même
vocabulaire ? postfix a t-il un "plugin" pour chiffrer les mails ou
alors faut-il se tourner vers d'autres outils ?

Postfix ne peut pas chiffrer les mails, un autre MTA non plus, c'est seulem ent le client qui
peut le faire (car la clé privée de chiffrement doit rester chez celui qui envoie le mail, et
c'est aussi lui qui connaît la clé publique du destinataire).
C'est avec un plugin gpg dans ton courrielleur que tu peux chiffrer un mail.
--
Daniel
L'homme n'est pas fait pour travailler.
La preuve, c'est que ça le fatigue.
Courteline
1 2 3