Comment envoyer un e-mail depuis le terminal?


169

Je sais qu'il existe des moyens d'envoyer des e-mails depuis un terminal sous Linux / MacOS, mais je n'arrive pas à trouver la documentation appropriée sur la façon de le faire.

En gros, j'en ai besoin pour mon script bash qui me prévient chaque fois qu'il y a un changement dans un fichier.


3
Il convient probablement de noter ici que certains hébergeurs et FAI "désactivent" la possibilité pour vous d'envoyer des e-mails. Je suppose que c'est une tentative pour empêcher les gens de spammer et de phishing à travers eux
Jim Jeffries

@JimJeffries Lesquels? J'utilise un serveur Web Amazon EC2.
ckjbgames

Réponses:


125

Allez dans Terminal et tapez man mailpour obtenir de l'aide.

Vous devrez configurer SMTP:

http://hints.macworld.com/article.php?story=20081217161612647

Voir également:

http://www.mactricksandtips.com/2008/09/send-mail-over-your-network.html

Par exemple:

mail -s "hello" "example@example.com" <<EOF
hello
world
EOF

Cela enverra un e-mail à example@example.comavec l'objet helloet le message

Bonjour

Monde


J'ai juste essayé, et cela a fonctionné pour moi, mais j'ai deux questions par curiosité. Que signifie <<, en ligne, j'ai vu quelques exemples avec '<' ou '<<. ' A quoi cela sert? Et pourquoi avez-vous donné End Of File là-bas et à la fin du message?
Deep

Les "<< EOF" et "EOF" marquent un "ici-document". Le texte entre les deux EOF est traité comme une chaîne entre guillemets multilignes. Il est décrit dans 'man bash'
Joe Inwap

134
echo "this is the body" | mail -s "this is the subject" "to@address"

20
Notez que toutes ces solutions supposent que vous avez un MTA installé localement
Miquel

11
@Miquel bon point. Dans Ubuntu, vous pouvez obtenir les prérequis via sudo apt-get install mailutils.
earldouglas

3
@James, ça ne marche pas pour mon MAC (((Pourriez-vous m'aider?
neo

1
Tutoriel étape par étape: rianjs.net/2013/08/…
Dušan Maďar

Étrange. Cela me donne un message "SyntaxError: syntaxe invalide" bien que le seul changement que j'ai fait était de changer l'adresse.
Jewenile

41

Si tout ce dont vous avez besoin est une ligne d'objet (comme dans un message d'alerte), faites simplement:

mailx -s "This is all she wrote" < /dev/null "myself@myaddress"

Vous devrez peut-être installer mailutils. Il peut être installé via un gestionnaire de paquets (par exemple apt install mailutils)
Jeevan Takhar

31

Le moyen le plus simple est probablement d'utiliser curlpour cela, il n'est pas nécessaire d'installer de packages supplémentaires et il peut être configuré directement dans une requête.

Voici un exemple d'utilisation du serveur smtp gmail:

curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd \
  --mail-from 'from-email@gmail.com' \
  --mail-rcpt 'to-email@gmail.com' \
  --user 'from-email@gmail.com:YourPassword' \
  -T <(echo -e 'From: from-email@gmail.com\nTo: to-email@gmail.com\nSubject: Curl Test\n\nHello')

C'est une très bonne option. Vous pouvez générer un mot de passe spécifique à l'application pour votre compte Google et cela ne fait que livrer l'e-mail de votre propre compte. Très cool!
dakdad

2
Excellente réponse, enfin n'oubliez pas d'activer l'application la moins sécurisée pour faire fonctionner myaccount.google.com/lesssecureapps
yubaraj poudel

@aliaksandr devrait ajouter ce dernier point à sa réponse. Par défaut, cette option (donner accès à des applications moins sécurisées) est désactivée et ce n'est pas évident. Au moins si vous utilisez un compte Gmail comme e-mail d'expéditeur.
EAmez

18

Si vous souhaitez joindre un fichier sous Linux

echo 'mail content' | mailx -s 'email subject' -a attachment.txt username@stackoverflow.com

4
Il donne un invalid headermessage pour mon fichier joint. L'option correcte était une majuscule -A.
Stephane

3
@Stephane Selon patrick-haugh, -a est le commutateur d'attachement. -A est pour la commande de compte. Voir la page de manuel
MiaeKim

10

dans le terminal de votre mac os ou linux os tapez ce code

mail -s (subject) (receiversEmailAddress)  <<< "how are you?"

pour un exemple, essayez ceci

mail -s "hi" abc@example.com <<< "how are you?"<br>

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.