GNU/Linux >> Tutoriels Linux >  >> Linux

Envoyer un e-mail à partir d'un terminal Linux ou d'un script à l'aide de la commande mail

Il existe d'autres clients de ligne de commande basés sur un terminal qui peuvent également être utilisés pour envoyer des e-mails tels que sendmail, mutt, SSMTP, telnet, mais dans ce guide, nous nous concentrerons sur le mail commande.

La commande mail appelle le binaire sendmail standard (/usr/sbin/sendmail) qui se connecte à son tour au MTA local pour envoyer le courrier à sa destination. Le MTA local est un serveur SMTP exécuté localement qui accepte les e-mails sur le port 25.

Cela signifie qu'un serveur smtp comme Postfix devrait être en cours d'exécution sur la machine sur laquelle vous avez l'intention d'utiliser la commande mail. Si aucun n'est en cours d'exécution, vous obtenez le message d'erreur "send-mail :Impossible d'ouvrir le courrier :25".

Installation

Installez avec cette commande :

Pour Ubuntu

sudo apt-get install mailutils 

Pour centos 7

sudo yum install -y mailx

Pour centos 8/Alma Linux/Rhel

sudo dnf install -y mailx

Testez que la commande est correctement installée avec cette commande :

mail

La commande ci-dessus vérifie s'il existe un e-mail pour l'utilisateur actuel. Vous devriez voir une sortie comme celle-ci :

➜ mail
No mail for centos

Utilisation

Envoi d'e-mails simples

Utilisez cette commande pour envoyer un e-mail à [email protected] . Le -s l'argument de la ligne de commande sert à spécifier le sujet.

mail -s "Test mail" [email protected]

La commande ci-dessus se bloquera en appuyant sur Entrée en attendant que vous tapiez votre message. Lorsque vous avez terminé, utilisez Ctrl-D pour informer le client de messagerie que vous avez terminé et que l'e-mail est prêt à être envoyé.

❯ mail -s "Test mail" [email protected]
Hey John,

Please remember to send me the Linux Book.

Regards,
Me.
EOT

Le EOT a été saisi lorsque j'ai appuyé sur Ctrl-D . Une fois que vous faites cela, la commande mail enverra le message pour livraison et c'est fait.

Envoyer un message avec le contenu d'un fichier

Utilisez cette commande pour envoyer un message depuis le fichier /path/to/file.txt .

mail -s "Test mail" [email protected] < /path/to/file.txt

Vous pouvez également utiliser cette doublure unique où vous répercutez le contenu à envoyer, puis le redirigez vers la commande mail.

echo "Hello world" | mail -s "Test mail" [email protected]

Envoyer un e-mail à plusieurs destinataires

Pour envoyer un e-mail à plusieurs destinataires, vous pouvez utiliser une liste d'e-mails séparés par des virgules comme dans cet exemple :

echo "Hello world" | mail -s "Test mail" [email protected],[email protected]

Ajouter des destinataires CC et BCC

Une copie carbone invisible (BCC) et une adresse en copie carbone (CC) peuvent également être jointes. Utilisez -c <email> pour CC et -b <email> pour cci.

Cet exemple spécifie CC et BCC :

echo "Hello world" | mail -s "Test mail" -c [email protected] -b [email protected]

Spécifiez le nom et l'adresse de l'expéditeur

Vous pouvez utiliser l'option -r pour spécifier le nom et l'adresse de l'expéditeur comme indiqué ci-dessous :

echo "Hello world" | mail -s "Test mail" –r "Kip<[email protected]>" [email protected]

Alternativement, vous pouvez utiliser -a pour ajouter un en-tête supplémentaire à joindre au message. Voici un exemple de la façon de fournir FROM dans le cadre de cela.

echo "Hello world" | mail -s "Test mail" [email protected] -aFrom:[email protected]

Pour spécifier le nom de l'expéditeur, utilisez la syntaxe suivante :

echo "Hello world" | mail -s "Test mail" [email protected] --aFrom:Kip\<[email protected]\>

Veuillez noter que nous devons échapper aux flèches less et great car elles ont une signification particulière pour l'invite du shell. Lorsque vous émettez la commande à partir d'un script, vous l'omettez.

Spécifier l'adresse "Répondre à"

Utilisez le replyto pour spécifier l'adresse de réponse comme dans cet exemple :

echo "Hello world" | mail -s "Test mail" [email protected] [email protected]

E-mail avec une pièce jointe

Envoyer un e-mail depuis [email protected] à [email protected] avec une pièce jointe.

mail -s "The File you requested" -a ~/Documents/file.txt -r [email protected] [email protected] <<EOF
Hi jane,

Please find the file requested attached.

Kind Regards,
John.
EOF

E-mail à un utilisateur du système local

Pour envoyer un e-mail à un utilisateur du système local, spécifiez uniquement le nom d'utilisateur à la place du destinataire. Vous pouvez ajouter le nom d'hôte mais ce n'est pas nécessaire en utilisant @hostname .

mail -s "Test Subject" username 

Activation de Verbose

Si vous avez besoin de vérifier ce qui se passe pendant le traitement de l'e-mail, activez la sortie détaillée avec l'argument -v . C'est utile pour le dépannage, par exemple lorsque vous souhaitez vérifier les commandes SMTP utilisées par la commande mail. Voici un exemple :

mail -v -s "Hello theere" [email protected] <<< 'This is the message' 

Linux
  1. 4 façons d'envoyer une pièce jointe à partir de la ligne de commande Linux

  2. Comment envoyer du courrier via un serveur SMTP externe à l'aide de la commande mailx sous Linux ?

  3. Le moyen le plus simple d'envoyer un courrier avec une pièce jointe d'image à partir de la ligne de commande à l'aide de Gmail ?

  4. Comment envoyer un e-mail HTML à l'aide de la commande "mail" de Linux ?

  5. matlab exécute le script à partir de la ligne de commande linux

4 commandes pour arrêter Linux depuis le terminal

Tutoriel sur l'utilisation de la dernière commande dans le terminal Linux

Envoyer un e-mail sous Linux à partir de la ligne de commande

Utilisation de cut sur Linux Terminal

Mutt, Mail et Telnet - Envoyez des e-mails à partir de la ligne de commande Linux ou du terminal

Comment insérer une nouvelle ligne dans l'e-mail à l'aide de la commande linux mail ?