#1 Le 29/01/2025, à 12:19
- lebossejames
envoi email en une simple ligne de commande
Bonjour,
Je souhaiterais pouvoir envoyer un e-mail en une simple ligne de commande sans paramétrer le moindre fichier de conf, est-il possible?
MESSAGE_BODY="Test mail"
EMAIL_SUBJECT="Testing Email from Shell Script with SMTP-01"
FROM_EMAIL_ADDRESS="test@outlook.com"
#FRIENDLY_NAME="NO Reply test"
SMTP_SERVER="smtp-mail.outlook.com"
SMTP_PORT="587"
SMTP_USER="test@outlook.com"
SMTP_PASS="XXXXX"
###### for multi recipient please use space between address
TO_EMAIL_ADDRESS="dest@outlook.com"
echo $MESSAGE_BODY | msmtp -v --host=$SMTP_SERVER --port=$SMTP_PORT --password=<(echo "$SMTP_PASS") --auth=on --user=$SMTP_USER --tls=on --tls-starttls=on --from="$FROM_EMAIL_ADDRESS" $FROM_EMAIL_ADDRESS
echo $MESSAGE_BODY | mail -s "$EMAIL_SUBJECT" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://$SMTP_SERVER:$SMTP_PORT \
-S from="$FROM_EMAIL_ADDRESS" \
-S smtp-auth-user=$SMTP_USER \
-S smtp-auth-password=$SMTP_PASS \
-S ssl-verify=ignore \
-a file.pdf \
$TO_EMAIL_ADDRESS
Merci d'avance.
Dernière modification par lebossejames (Le 05/03/2025, à 22:29)
Hors ligne
#2 Le 29/01/2025, à 12:33
- iznobe
Re : envoi email en une simple ligne de commande
Bonjour , c' est possible , il y a des dizaines de tutos sur le net .
envoyer un e-mail en une simple ligne de commande
PS : on a pas la même définition d' une ligne
il s' agit d' un script de commandes , pas d' une ligne .
Dernière modification par iznobe (Le 29/01/2025, à 12:33)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#3 Le 29/01/2025, à 13:32
- sputnick
Re : envoi email en une simple ligne de commande
Salut.
pour envoyer des pièces jointes, je recommande s-nail:
$ apt-cache show s-nail
Package: s-nail
Architecture: amd64
Version: 14.9.24-2build2
Multi-Arch: foreign
Priority: optional
Section: universe/mail
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Paride Legovini <paride@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1082
Provides: imap-client, mail-reader
Depends: base-files (>= 2.2.0), debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.38), libgssapi-krb5-2 (>= 1.17), libidn2-0 (>= 2.0.0), libssl3t64 (>= 3.0.0), libtinfo6 (>= 6)
Suggests: default-mta | mail-transport-agent
Replaces: nail
Filename: pool/universe/s/s-nail/s-nail_14.9.24-2build2_amd64.deb
Size: 554148
MD5sum: 099858833ab303cb9b468eb1d0e3d1d4
SHA1: 2b250c7921878d43333b552f4b1910e7e996f83f
SHA256: 1d9b605ec2efa1cb0dd9c0a5170a8637ff1c03a9ae3fbbc2b9dd532fee8c6edd
SHA512: b946b9088c2d46aa509a4f727d60179ac4215a811682adc05f574d34c669b28fbd44d5b5fc7cb74df4127ad34428165700bcc48843698c8b21adf0a298a92710
Homepage: https://www.sdaoden.eu/code.html
Description-en: feature-rich BSD mail(1)
S-nail is a mail processing system with a command syntax reminiscent
of ed(1) with lines replaced by messages. It is intended to provide
the functionality of the POSIX mailx(1) command and offers (mostly
optional) extensions for line editing, IDNA, MIME, S/MIME, SMTP and
POP3 (and IMAP). It is usable as a mail batch language. S-nail is a
derivative of Heirloom mailx, formerly known as nail, which
itself is based upon Berkeley Mail that has a history back to the 70s.
Description-md5: 03cd2ad714c52e3b66e646a7a50f7ea8
Un seul être vous manque et tout est dépeuplé. Lamartine
https://sputnick.fr
Hors ligne
#4 Le 29/01/2025, à 13:36
- krodelabestiole
Re : envoi email en une simple ligne de commande
sans paramétrer le moindre fichier de conf
en local sûrement mais sur internet, non (à moins qu'il n'ait pas besoin d'arriver à destination).
il faudrait sans doute que tu décrives plus généralement ce que tu cherches à faire.
tu peux éventuellement jeter un œil à mailutils ou bsd-mailx, et à msmtp, et aux tests de fonctionnement. c'est souvent la solution la plus simple à mettre en œuvre pour envoyer un email depuis un script ou un terminal.
dans le même genre ssmtp est abandonné mais tout n'est pas non plus à jeter dans la doc : https://doc.ubuntu-fr.org/ssmtp#en_ligne_de_commande
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
Hors ligne
#5 Le 29/01/2025, à 13:50
- lebossejames
Re : envoi email en une simple ligne de commande
lebossejames a écrit :sans paramétrer le moindre fichier de conf
en local sûrement mais sur internet, non (à moins qu'il n'ait pas besoin d'arriver à destination).
il faudrait sans doute que tu décrives plus généralement ce que tu cherches à faire.tu peux éventuellement jeter un œil à mailutils ou bsd-mailx, et à msmtp, et aux tests de fonctionnement. c'est souvent la solution la plus simple à mettre en œuvre pour envoyer un email depuis un script ou un terminal.
dans le même genre ssmtp est abandonné mais tout n'est pas non plus à jeter dans la doc : https://doc.ubuntu-fr.org/ssmtp#en_ligne_de_commande
Avoir un script bash dont lequel j'aurais une seule commande d'envoi de mail (objet, corps du message) avec pièce jointe attaché en ayant des paramètres email destinataire, email source, server stmp qui sera utilisé pour l'envoi avec les infos de connexions.
Hors ligne
#6 Le 29/01/2025, à 14:23
- krodelabestiole
Re : envoi email en une simple ligne de commande
dans ce cas tu peux passer toutes les infos de connexion en paramètres de commande : https://manpages.ubuntu.com/manpages/tr … mtp.1.html
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
Hors ligne
#7 Le 29/01/2025, à 23:26
- lebossejames
Re : envoi email en une simple ligne de commande
J'obtiens ceci:
SMTP_PASS="monmotdepasse@"
echo $MESSAGE_BODY | msmtp -v --host=$SMTP_SERVER --port=$SMTP_PORT --password="$SMTP_PASS" --auth=on --user=$SMTP_USER --tls=on --tls-starttls=on --from="$FROM_EMAIL_ADDRESS" $TO_EMAIL_ADDRESS
sh: 1: monmotdepasse@: not found
msmtp: impossible de lire la sortie de "monmotdepasse@"
Hors ligne
#8 Le 04/03/2025, à 19:33
- lebossejames
Re : envoi email en une simple ligne de commande
J'obtiens ceci:
SMTP_PASS="monmotdepasse@" echo $MESSAGE_BODY | msmtp -v --host=$SMTP_SERVER --port=$SMTP_PORT --password="$SMTP_PASS" --auth=on --user=$SMTP_USER --tls=on --tls-starttls=on --from="$FROM_EMAIL_ADDRESS" $TO_EMAIL_ADDRESS
sh: 1: monmotdepasse@: not found msmtp: impossible de lire la sortie de "monmotdepasse@"
Sauriez-vous me dire d'où vient cette erreur svp?
Merci.
Hors ligne
#9 Le 04/03/2025, à 19:55
- Sciensous
Re : envoi email en une simple ligne de commande
sans doute les " autour de monmotdepasse@ ?
(mal acceptées par le pipe | )
sous ubuntu LTS de la 06 à la 22.04, puis arrêt pour Debian 12 et antiX 21 ou 23
( sous LXDE et gnome-shell )
Hors ligne
#10 Le 05/03/2025, à 10:25
- lebossejames
Re : envoi email en une simple ligne de commande
sans doute les " autour de monmotdepasse@ ?
(mal acceptées par le pipe | )
J'obtiens maintenant sur mon script bash:
sh: 1: monmotdepasse@: not found
msmtp: cannot read output of 'monmotdepasse@'
Hors ligne
#11 Le 05/03/2025, à 12:47
- Watael
Re : envoi email en une simple ligne de commande
ce que je comprends du man c'est que cette option ne contient pas le mot de passe, mais le chemin d'un fichier de conf qui, lui, contient le mot de passe en clair (ou pas selon passwordeval).
Store the password in the configuration file using the password command.
cf. https://marlam.de/msmtp/msmtp.html#Authentication
peut-être avec une Substitution de processus
--password=<(echo "$SMTP_PASS")
?
Dernière modification par Watael (Le 05/03/2025, à 12:48)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#12 Le 05/03/2025, à 16:28
- lebossejames
Re : envoi email en une simple ligne de commande
ce que je comprends du man c'est que cette option ne contient pas le mot de passe, mais le chemin d'un fichier de conf qui, lui, contient le mot de passe en clair (ou pas selon passwordeval).
la doc a écrit :Store the password in the configuration file using the password command.
cf. https://marlam.de/msmtp/msmtp.html#Authentication
peut-être avec une Substitution de processus
--password=<(echo "$SMTP_PASS")
?
Maintenant j'ai :
utilisation du compte spécifié sur la ligne de commande
sh: 1: /dev/fd/63: Permission denied
msmtp: cannot read output of '/dev/fd/63'
Je précise que mon SMTP_PASS contient [A-Z0-9@] .
Hors ligne
#13 Le 05/03/2025, à 18:07
- iznobe
Re : envoi email en une simple ligne de commande
Bonjour , juste pour savoir , tu utilises le script donnée au message #1 ?
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#14 Le 05/03/2025, à 19:28
- lebossejames
Re : envoi email en une simple ligne de commande
Bonjour , juste pour savoir , tu utilises le script donnée au message #1 ?
Désolé j'avais oublié de mettre la ligne contenant la commande msmtp, je l'ai ajouté
Hors ligne
#15 Le 05/03/2025, à 21:41
- iznobe
Re : envoi email en une simple ligne de commande
cette ligne est syntaxiquement incorrecte :
SMTP_USER=test@outlook.com"
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#16 Le 05/03/2025, à 22:30
- lebossejames
Re : envoi email en une simple ligne de commande
cette ligne est syntaxiquement incorrecte :
SMTP_USER=test@outlook.com"
Oui en effet je confirme, cela ne change pas l'erreur constaté.
Hors ligne
#17 Le 06/03/2025, à 13:26
- krodelabestiole
Re : envoi email en une simple ligne de commande
je viens de tester, chez infomaniak ça marche avec :
printf "Subject:DeQuoiOnParle\n\nLeCorpsDuMessage" | msmtp user@dest.tld --host=mail.infomaniak.com --port=587 --auth=login --tls=on --user=user@from.tld --from=user@from.tld --passwordeval="echo mot_de_passe_en_clair"
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
Hors ligne
#18 Le 06/03/2025, à 16:03
- lebossejames
Re : envoi email en une simple ligne de commande
je viens de tester, chez infomaniak ça marche avec :
printf "Subject:DeQuoiOnParle\n\nLeCorpsDuMessage" | msmtp user@dest.tld --host=mail.infomaniak.com --port=587 --auth=login --tls=on --user=user@from.tld --from=user@from.tld --passwordeval="echo mot_de_passe_en_clair"
J'ai essayé ceci:
echo $MESSAGE_BODY | msmtp -v $TO_EMAIL_ADDRESS --host=$SMTP_SERVER --port=$SMTP_PORT --auth=login --tls=on --user=$SMTP_USER --from=$FROM_EMAIL_ADDRESS --passwordeval="echo $SMTP_PASS"
Il y a du mieux, cependant j'ai cette trace, la variable passwordeval contient echo :
password = *
passwordeval = echo monmotdepasse
ntlmdomain = (non défini)
Hors ligne
#19 Le 06/03/2025, à 17:21
- iznobe
Re : envoi email en une simple ligne de commande
je viens de tester, chez infomaniak ça marche avec :
printf "Subject:DeQuoiOnParle\n\nLeCorpsDuMessage" | msmtp user@dest.tld --host=mail.infomaniak.com --port=587 --auth=login --tls=on --user=user@from.tld --from=user@from.tld --passwordeval="echo mot_de_passe_en_clair"
heu , meme moi j' ai du mal à comprendre par et / ou quoi remplacer dans la commande ...
du coup tu n' utilises pas le script mais uniquement la commande , on est d' accord .
c' est quoi :
+ user@dest.tld
+ user@from.tld
?
il faut remplacer respectivement par :
+ adresse mail destinataire
+ adresse mail envoyeur
?
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#20 Le 06/03/2025, à 18:45
- krodelabestiole
Re : envoi email en une simple ligne de commande
--from=user@from.tld
tu remplaces user@from.tld par l'email de l'expéditeur (--from est décrit dans la doc de msmtp)
j'ai évité d'être cryptique en utilisant -f qui revient au même
user@dest.tld -> mail du destinataire
user@from.tld -> mail de l'expéditeur
la seule subtilité c'est :
--user=user@from.tld
c'est le nom d'utilisateur (user...) pour se connecter au SMTP. c'est pas forcément un email, ça l'est chez infomaniak.
... je pense que le problème était de toute façon plutôt côté password / passwordeval
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
Hors ligne
#21 Le 06/03/2025, à 18:47
- iznobe
Re : envoi email en une simple ligne de commande
j ' utilise ce script pour envoyer des mails automatiques :
#! /usr/bin/python
# coding: utf-8
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# variables a remplir
mailSubject = ""
mailBody = MIMEText("")
mailFrom = ""
mailTo = ""
mailCc = ""
smtpServ = "smtp.infomaniak.com"
smtpPort = 587
smtpSender = ""
smtpPass = ""
# FIN
def envoi_mail() : # expeditions multiples
msg = MIMEMultipart()
msg["Subject"] = mailSubject
msg["From"] = mailFrom
msg["To"] = mailTo
msg["Cc"] = mailCc
msg.attach(mailBody)
smtp = smtplib.SMTP(smtpServ, 587) # connection avec le serveur
smtp.starttls() # initialisation securisation
smtp.login(smtpSender, smtpPass) # transmission login securise
smtp.sendmail(msg["From"], msg["To"].split(",") + msg["Cc"].split(","), msg.as_string())
smtp.quit()
envoi_mail()
c' est du python , mais au moins ca fonctionne , il n ' y a qu ' a mettre ce que tu veux entre les "" .
il n' y a rien a toucher dans la fonction .
la seule subtilité c'est :
--user=user@from.tld
c'est le nom d'utilisateur (user...) pour se connecter au SMTP. c'est pas forcément un email, ça l'est chez infomaniak.
marche pas chez moi , j ' obtenais :
l' adresse enveloppe mon_mail n' est pas acceptée
je viens de faire un énième essai et là ça fonctionne du 1er coup , pas compris trop bizzare cette histoire .
Dernière modification par iznobe (Le 06/03/2025, à 18:56)
retour COMPLET et utilisable de commande | script montage partitions
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#22 Le 06/03/2025, à 20:42
- lebossejames
Re : envoi email en une simple ligne de commande
Voici mon script bash:
#!/bin/bash
# Send Attachments
#
versionCode="1.00"
nameBureau=""
nameProject="Send"
if [ -d "$HOME/Bureau" ]
then
nameBureau="Bureau"
else
nameBureau="Desktop"
fi
### option configuration
MESSAGE_BODY="Test mail"
EMAIL_SUBJECT="Testing Email from Shell Script with SMTP-01"
FROM_EMAIL_ADDRESS="test@live.fr"
#FRIENDLY_NAME="NO Reply test"
SMTP_SERVER="smtp.office365.com"
SMTP_PORT=587
SMTP_USER="test@live.fr"
SMTP_PASS=monmotdepasse123@
###### for multi recipient please use space between address
TO_EMAIL_ADDRESS="test@live.fr"
###### How to file NSS dir use command follow this comment - find / -name "cert*.db"
#NSS_DIR="/etc/pki/nssdb/"
SMTP_CONF_FILE=$HOME/$nameBureau/$nameProject/smtp_conf.json
LAST_MONTH_FILE=$HOME/$nameBureau/$nameProject/last_month.txt
FORCE_SEND_ASK_FILE=$HOME/$nameBureau/$nameProject/forceSendAsk.txt
FORCE_SEND_ASK="false"
nbFilesSended=0
last_month=""
echo $FORCE_SEND_ASK > $FORCE_SEND_ASK_FILE
if test -f "$FORCE_SEND_ASK_FILE"; then
FORCE_SEND_ASK=$(cat $FORCE_SEND_ASK_FILE)
fi
actual_year=$(date +%Y)
actual_month=$(date +%m)
if ! [ -d $HOME/$nameBureau/$nameProject/ATTACHMENTS/$actual_year ]; then
mkdir $HOME/$nameBureau/$nameProject/ATTACHMENTS/$actual_year
if ! [ -d $HOME/$nameBureau/$nameProject/ATTACHMENTS/$actual_year/$actual_month ]; then
mkdir $HOME/$nameBureau/$nameProject/ATTACHMENTS/$actual_year/$actual_month
fi
fi
if test -f "$LAST_MONTH_FILE"; then
last_month=$(cat $LAST_MONTH_FILE)
fi
echo $MESSAGE_BODY | msmtp -v $TO_EMAIL_ADDRESS --host=$SMTP_SERVER --port=$SMTP_PORT --auth=login --tls=on --user=$SMTP_USER --from=$FROM_EMAIL_ADDRESS --passwordeval="echo $SMTP_PASS"
Hors ligne