Comment envoyer un mail depuis la ligne de commande?

216

Comment envoyer un mail depuis la ligne de commande?

Olivier Lalonde
la source
1
ubuntuforums.org/showthread.php?t=780509 peut vous aider.
Utilisateur
1
Vous pouvez également utiliser le pin.
Kaveh
1
Vous pouvez également installer msmtp et suivre les instructions décrites dans le ArchWiki
Thiago Perrotta
2
C'est dommage que les réponses à cette question soient si dépassées. C'est une question importante pour laquelle un bon tutoriel pourrait être utilisé
6005

Réponses:

37

Essayez d'installer le client de messagerie Mutt . Une autre option consiste à utiliser emacs avec gnus . D'autres options disponibles aussi ... IMHO, vous devriez utiliser plus de détails dans vos questions, ou plusieurs réponses différentes à votre question que vous recevrez :-)

Crncosta
la source
2
Accepté celui-ci car il ne nécessite aucune configuration et est assez convivial.
Olivier Lalonde
21
attendez. mutt - convivial? le one-liner le plus fou que j'ai lu aujourd'hui :)
Stann
156
  1. Installez ssmtp Installez ssmtp :

    sudo apt-get install ssmtp
    
  2. Editez le fichier de configuration ssmtp:

    gksu gedit /etc/ssmtp/ssmtp.conf
    
  3. Ajouter le texte suivant:

    [email protected]
    mailhub=smtp.gmail.com:465
    rewriteDomain=gmail.com
    AuthUser=username
    AuthPass=password
    FromLineOverride=YES
    UseTLS=YES
    
  4. Exécutez ssmtp et fournissez l'adresse électronique du destinataire:

    ssmtp [email protected]
    
  5. Fournissez les détails du message comme suit:

    To: [email protected]
    From: [email protected]
    Subject: Sent from a terminal!
    
    Your content goes here. Lorem ipsum dolor sit amet, consectetur adipisicing.
    (Notice the blank space between the subject and the body.)
    
  6. Appuyez sur Ctrl+ Dpour envoyer.


Vous pouvez également mettre le texte dans un fichier et l’envoyer comme suit:

ssmtp [email protected] < filename.txt
Sid
la source
29
Il semble étrange de laisser mon mot de passe de messagerie exposé dans certains fichiers de l'ordinateur. Est-ce sécuritaire?
Oadams
2
@adams pas très sûr. Utilisez la vérification en deux étapes pour réduire votre risque ou utilisez une passerelle de messagerie qui n'exige pas de mot de passe, comme votre FAI.
Itsadok
5
N'installez pas ssmtp sur un serveur sur lequel postfix est installé. Postfix sera supprimé. Utilisez plutôt sendmail [email protected] <fichier.txt, qui fonctionnera avec postfix ou ssmtp.
Alistair Buxton
2
Une autre chose étrange que je voulais partager ici, c'est que cela ne fonctionnait pas pour moi lorsque j'avais un mot de passe long / complexe, mais lorsque je le changeais en mot de passe simple, étrange mais vrai. J'ai également entendu la même chose de quelqu'un d'autre, mais j'ai essayé après de nombreuses tentatives infructueuses pour envoyer du courrier. Dès que j'ai simplifié le mot de passe, à ma grande surprise, cela a fonctionné;)
Rajat Gupta
Si Gmail n'autorise pas votre serveur à accéder, connectez-vous à Gmail sur le serveur à l'aide du navigateur en ligne de commande. askubuntu.com/questions/460022/using-terminal-as-a-web-browser
Sanghyun Lee
87

La plupart du temps, vous n'avez pas besoin de configurer un serveur SMTP que vous pouvez simplement utiliser à mailpartir de la ligne de commande (si ce n'est déjà fait, installez avec sudo apt-get install mailutils). (Ou si vous êtes sur un serveur où sendmail est configuré, etc.)

marco@dagobah:~$ mail -v [email protected]
Subject: Hello World!
This is an email to myself.

Hope all is well.
.
Cc: 

Vous terminez les messages avec un seul .en ligne. C’est à ce moment mail-là que vous serez invité à Cc:entrer les informations (ou à le laisser vide), mailpuis à imprimer des informations supplémentaires sur ce qu’il tente de faire, ainsi qu’à détailler le traitement de la connexion, de la transmission et de la réception des données du serveur de messagerie.

Marco Ceppi
la source
28
J'ajouterais la réponse en incluant "sudo apt-get install mailutils" car il n'est pas présent sur une installation propre d'Ubuntu 10.04. En outre, mettre fin au message avec a. sur une seule ligne ne fonctionnait pas. Je devais "Ctrl-D" à la place. Enfin, le message n'est pas passé!
Olivier Lalonde
7
@OlivierLalonde sudo apt-get install mailutilsinstallera un serveur SMTP postfixqui pourrait être un peu surpondéré pour certaines personnes.
vaab
5
mailutils installera également mysql!
Chmike
17
L'option -v ne figure pas dans mon installation de mail 2.99.98, il fallait aussi utiliser Ctrl + D pour terminer
markmnl
2
Veuillez mettre à jour cette question, elle est obsolète.
phil294
47
apt-get install libio-socket-ssl-perl libnet-ssleay-perl sendemail

usage:

sendemail -f [email protected] -t [email protected] -u subject -m "message" -s smtp.gmail.com:587 -o tls=yes -xu [email protected] -xp gmailpassword 

Si vous ne souhaitez pas spécifier votre mot de passe dans la ligne de commande (ce n'est généralement pas une bonne chose à faire), vous pouvez omettre ce paramètre et sendemail vous demandera le mot de passe ... et l'affichera à l'écran, mais au moins ce ne sera pas dans votre historique de ligne de commande.

jet
la source
Envoi de courrier à partir d'un compte GMail utilisant la sendmailplupart des certitudes très pratique. Je vous remercie.
Mark Tomlin
Trouvez un patch ici pour ne pas faire écho au mot de passe.
Arun
Je devais spécifier le port avec -s smtp.gmail.com:587.
Joe Mornin
5
ajoute un espace avant une ligne de commande pour ne pas l'enregistrer dans l'historique de la ligne de commande
guhur
une autre façon de ne pas l' afficher sur l'écran bash: enregistrer le mot de passe dans un fichier, puis de fichier à la variable d' environnement, ex: pass=$(cat my_password); sendemail... -xp $name ...et bien sûr si vous l' appelez , vous pouvez par programme faire quelque chose de similaire, ex: rubis system("sendemail ... -xp #{File.read 'my_password'}...")aussi peut échouer la Pour la première fois, vous devriez recevoir un e-mail sur ce compte, vous suggérant d'activer les applications moins sécurisées, pour que cela fonctionne.
rogerdpack
23

mpack est un excellent moyen en ligne de commande d'envoyer des pièces jointes.

apt-get install mpack

usage:

mpack -s "file you wanted" ./data.pdf [email protected]
BozoJoe
la source
20

Vous avez besoin d'un MTA pour envoyer un courrier. Pour cela, utilisez postfix:

sudo apt-get install postfix

Pour envoyer un email:

echo "test message" | mailx -s 'test subject' [email protected]

AIDEZ-MOI

Un zéro
la source
Vous devez également installer mailutils pour mailx, non?
Nick
4
J'aimerais que ce soit vraiment aussi simple, mais à moins que vous ne soyez quelqu'un de spécial, cela ne fonctionnera pas. 99,9999% des FAI ignoreront le courrier des serveurs postfix privés, car 9,99999 fois sur 10 sont des spammeurs.
Cerin
cela n'a pas fonctionné pour moi, il m'a demandé de l'installer mailutilsquand je suis entré dans le terminal
Mostafiz Rahman
Allez-y et installez mailutils. Vous n'avez pas besoin du code IIRC postfixé.
UAV
@Cerin a raison. J'avais cependant besoin d'une fonctionnalité de mailing très simple pour un travail cron. En guise de solution de contournement, si vous recevez via un compte Gmail, vous pouvez configurer un filtre pour l’e-mail (via des mots-clés ou l’adresse de l'expéditeur). Gmail autorisera son envoi.
Carrie Kendall
15

Installez le paquet sendmailpuis tapez

sendmail -t receiver@example 

puis écrivez votre email puis appuyez sur Ctrl + D

MhdSyrwan
la source
10
mail -s "subjet" -a "attchedfile_name" someone@dest_email.com

ou

cat "afile" | mail -s "subject" someone@dest_email.com
utilisateur142345
la source
Juste pour ajouter pour faciliter les tests: echo "Hello world!" | mail -s "Hello" [email protected]
Bohne
2
Si quelqu'un n'a pas la commande mail, il suffit de lancer: sudo apt-get install mailutilssous Ubuntu / Debian ou yum install mailxCentOS / Redhat
Giovanni Benussi le
9

Vous pouvez envoyer un email à partir de la ligne de commande avec TelNet ou NetCat .

Tout est expliqué ici .

hanoo@hp_laptop% nc 127.0.0.1 25
220 hp_laptop.localdomain ESMTP Postfix
EHLO man
250 hp_laptop.localdomain
MAIL FROM: <[email protected]>
250 2.1.0 Ok
RCPT TO: <[email protected]>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
This is the body of my mail,
this is the second line...
.
250 2.0.0 Ok: queued as 9C12E7F404
hanoo
la source
2
C'est un peu difficile d'utiliser SSL avec cette méthode;)
iX3
1
@ iX3 vient de l'utiliser swakset tout va bien pour SSL / TLS aussi ;-)
lundi
Ouopenssl s_client -starttls smtp ...
Raman
7

Si vous essayez d’envoyer du courrier électronique à partir d’un système qui n’exécute pas son propre serveur de courrier électronique (c’est-à-dire le système de bureau), vous devez installer quelque chose comme nullmailer ou esmtp , qui transfère votre courrier local vers un "vrai" courrier. serveur.

En tant qu'outils de ligne de commande, vous pouvez installer mail ou mailx (packages mailutils, heirloom-mailx ou bsd-mailx). Si vous avez besoin de pièces jointes, essayez biabam.

Ddeimeke
la source
1
J'aime bsd-mailx pour la commande -E et les cronjobs
meffect
6

Je n'ai jamais essayé, mais une mailcommande peut envoyer du courrier. Voir le courrier de l'homme .

Pour tester le courrier électronique local:

echo message | mail username@localhost
dv3500ea
la source
6
sudo apt-get install sharutils mailutils
uuencode filename filename | mail [email protected]

filenameest le même: il s'agit d'un fichier d'entrée et d'un fichier distant.

nisse
la source
sudo apt-get install sharutilspouruuencode
Janus Troelsen
1
mailutils installe mysql! oO
chmike
3

Vous pouvez essayer ceci:

mail [email protected] -s "Attached file" <<EOF                 
Hi

~| uuencode $HOME/filename.txt filename.txt

EOF

Cela fonctionne avec GNU Mailutils , consultez le site Web pour plus d’informations.

Sharad
la source
2

Run :

sudo apt-get install ssmtp
sudo -H gedit /etc/ssmtp/ssmtp.conf

Ce qui suit doit être ajouté ici:

# The user that gets all the mails (UID < 1000, usually the admin)
[email protected]

# The mail server (where the mail is sent to), both port 465 or 587 should be acceptable
# See also https://support.google.com/mail/answer/78799
mailhub=smtp.gmail.com:587

# The address where the mail appears to come from for user authentication.
rewriteDomain=gmail.com

# Use SSL/TLS before starting negotiation
UseTLS=Yes
UseSTARTTLS=Yes

# Username/Password
AuthUser=yourusernameofgmail
AuthPass=yourGmailPassowrd
AuthMethod=LOGIN

# Email 'From header's can override the default domain?
FromLineOverride=yes

Run :

sudo -H gedit /etc/ssmtp/revaliases

Entrez là:

root:[email protected]:smtp.gmail.com:587

Activer les "applications moins sécurisées" sur Gmail:
https://support.google.com/accounts/answer/6010255?hl=fr

Testez-le en exécutant ce qui suit sur le terminal:

echo "Body of mail is abc" | mail -s "Subject is xyz" "[email protected]"`
Aquarius_Girl
la source
1

En plus de ce qui précède, j'avais toujours cette erreur

echo "Test message from Linux server using ssmtp" | sudo ssmtp -vvv  [email protected]
[<-] 220 smtp.gmail.com ESMTP v193sm19198825qka.18 - gsmtp
[->] EHLO localhost
[<-] 250 SMTPUTF8
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO localhost
[<-] 250 SMTPUTF8
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] aG94Z2VuZUBrrrFpbC5jb20=
[<-] 334 UGFzweliecmQ6
[<-] 534 5.7.14  https://support.google.com/mail/answer/78754 v193sm19198825qka.18 - gsmtp
ssmtp: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 v193sm19198825qka.18 - gsmtp)

SOLUTION: réinitialisez le mot de passe Gmail même si le mot de passe actuel est correct ... éventuellement, mesure de sécurité Google

Scott Stensland
la source