Wie kann ich E-Mails über die Befehlszeile senden?


215

Wie kann ich E-Mails über die Befehlszeile senden?



1
Sie können auch Kiefer verwenden.
Kaveh

1
Sie können auch msmtp installieren und die Anweisungen befolgen, die im ArchWiki
Thiago Perrotta

2
Es ist schade, dass die Antworten darauf so veraltet sind. Es ist eine wichtige Frage, die ein gutes Tutorial gebrauchen könnte
6005

Antworten:


36

Versuchen Sie, den Mutt E-Mail-Client zu installieren . Eine andere Option ist die Verwendung von Emacs mit Gnus . Andere Optionen auch verfügbar ... IMHO, sollten Sie mehr Details in Ihren Fragen oder mehrere verschiedene Antworten auf Ihre Frage verwenden, die Sie erhalten :-)


2
Akzeptiert dieses, da es keine Konfiguration erfordert und recht benutzerfreundlich ist.
Olivier Lalonde,

21
warten. mutt - benutzerfreundlich? der verrückteste Einzeiler, den ich heute gelesen habe :)
Stann

155
  1. Installieren Sie ssmtp Installieren Sie ssmtp :

    sudo apt-get install ssmtp
    
  2. Bearbeiten Sie die ssmtp-Konfigurationsdatei:

    gksu gedit /etc/ssmtp/ssmtp.conf
    
  3. Fügen Sie den folgenden Text hinzu:

    root=username@gmail.com
    mailhub=smtp.gmail.com:465
    rewriteDomain=gmail.com
    AuthUser=username
    AuthPass=password
    FromLineOverride=YES
    UseTLS=YES
    
  4. Führen Sie ssmtp aus und geben Sie die E-Mail-Adresse des Empfängers an:

    ssmtp recepient_name@gmail.com
    
  5. Geben Sie die Nachrichtendetails wie folgt an:

    To: recipient_name@gmail.com
    From: username@gmail.com
    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. Drücken Sie zum Senden Ctrl+ D.


Sie können den Text auch in eine Datei einfügen und wie folgt senden:

ssmtp recipient_name@gmail.com < filename.txt

29
Es fühlt sich komisch an, wenn mein E-Mail-Passwort in einer Datei auf dem Computer angezeigt wird. Ist das sicher?
oadams

2
@oadams nicht sehr sicher. Verwenden Sie die Bestätigung in zwei Schritten, um Ihr Risiko zu verringern, oder verwenden Sie ein E-Mail-Gateway, für das kein Kennwort erforderlich ist, wie für Ihre Internetdienstanbieter.
Itsadok

5
Installieren Sie ssmtp nicht auf einem Server, auf dem Postfix installiert ist. Postfix wird entfernt. Verwenden Sie stattdessen einfach sendmail user@example.com <file.txt, das entweder mit postfix oder ssmtp funktioniert.
Alistair Buxton

2
Eine andere seltsame Sache, die ich hier mitteilen wollte, ist, dass es bei mir nicht funktioniert hat, als ich ein langes / komplexes Passwort hatte, aber es hat funktioniert, als ich es in ein einfaches Passwort geändert habe, seltsam, aber wahr. Ich habe das auch von jemand anderem gehört, habe es aber nach vielen erfolglosen Versuchen, E-Mails zu senden, versucht. Sobald ich das Passwort vereinfacht habe, hat es zu meiner Überraschung einfach funktioniert;)
Rajat Gupta

Wenn Ihr Server nicht auf Google Mail zugreifen kann, melden Sie sich mit dem Befehlszeilenbrowser auf dem Server bei Google Mail an. askubuntu.com/questions/460022/using-terminal-as-a-web-browser
Sanghyun Lee

87

In den meisten Fällen sollte es nicht erforderlich sein, einen SMTP-Server zu konfigurieren, den Sie einfach mailüber die Befehlszeile verwenden können (falls nicht bereits vorhanden, installieren Sie ihn mit sudo apt-get install mailutils). (Oder wenn Sie sich auf einem Server befinden, auf dem sendmail konfiguriert ist, usw.)

marco@dagobah:~$ mail -v marco.ceppi.use@gmail.com
Subject: Hello World!
This is an email to myself.

Hope all is well.
.
Cc: 

Sie beenden Nachrichten mit einer einzigen .Online-Verbindung. In diesem Fall mailwerden Sie aufgefordert Cc:, die Informationen einzugeben (oder leer zu lassen), und mailes werden zusätzliche Informationen zu dem, was versucht wird, ausgedruckt sowie die Verarbeitung des Verbindens, Übertragens und Empfangens von Daten vom Mail-Server detailliert beschrieben.


28
Ich würde die Antwort anhängen, um "sudo apt-get install mailutils" aufzunehmen, da es bei einer sauberen Ubuntu 10.04-Installation nicht vorhanden ist. Beenden Sie die Nachricht auch mit a. in einer einzigen Zeile hat nicht funktioniert. Ich musste stattdessen "Strg-D". Zuletzt ging die Nachricht nicht durch!
Olivier Lalonde

7
@OlivierLalonde sudo apt-get install mailutilsinstalliert einen SMTP-Server postfix, der für einige Leute etwas überladen sein kann.
Vaab

5
mailutils installiert auch mysql!
Chmike

17
-v Option nicht in meiner Installation von Mail 2.99.98, musste auch Strg + D verwenden, um zu beenden
Markmnl

2
Bitte aktualisieren Sie diese Frage, sie ist veraltet.
Blauhirn

47
apt-get install libio-socket-ssl-perl libnet-ssleay-perl sendemail

Verwendungszweck:

sendemail -f fromuser@gmail.com -t touser@domain.com -u subject -m "message" -s smtp.gmail.com:587 -o tls=yes -xu gmailaccount@gmail.com -xp gmailpassword 

Wenn Sie Ihr Kennwort nicht in der Befehlszeile angeben möchten (was im Allgemeinen nicht sinnvoll ist), können Sie diesen Parameter weglassen, und sendemail fordert Sie zur Eingabe des Kennworts auf ... und zeigt es auf dem Bildschirm an, aber zumindest Es wird nicht in Ihrem Befehlszeilenverlauf sein.


Das Versenden von E-Mails von einem GMail-Konto aus ist mit sendmailgrößter Sicherheit sehr praktisch. Danke.
Mark Tomlin

Suchen Sie hier einen Patch , um das Passwort nicht zu wiederholen.
Arun

Ich musste den Port mit angeben -s smtp.gmail.com:587.
Joe Mornin

5
füge ein Leerzeichen vor einer Befehlszeile hinzu, um sie nicht im Befehlszeilenverlauf zu speichern
guhur

eine andere Art und Weise , um es nicht auf dem Bildschirm angezeigt bash: Passwort in einer Datei speichern, dann aus der Datei auf Umgebungsvariable, zB: pass=$(cat my_password); sendemail... -xp $name ...und natürlich , wenn Sie es sind Aufruf programmatisch können Sie etwas ähnliches, ex tun: Rubin , system("sendemail ... -xp #{File.read 'my_password'}...")es könnte auch die Ausfall Beim ersten Mal sollten Sie eine E-Mail an dieses Konto senden, in der Sie vorschlagen, dass Sie weniger sichere Apps aktivieren, damit dies funktioniert.
Rogerdpack

23

mpack ist eine ausgezeichnete Befehlszeilenmethode zum Senden von Dateianhängen.

apt-get install mpack

Verwendungszweck:

mpack -s "file you wanted" ./data.pdf loser@supergoober.cn

20

Sie benötigen einen MTA, um E-Mails zu senden. Verwenden Sie dazu postfix:

sudo apt-get install postfix

So senden Sie eine E-Mail:

echo "test message" | mailx -s 'test subject' myemail@mydomain.com

HILFE


Sie müssen auch mailutils für mailx installieren, richtig?
Nick

4
Ich wünschte, es wäre wirklich so einfach, aber es sei denn, Sie sind jemand ganz Besonderes, das wird nicht funktionieren. 99,9999% der ISPs ignorieren E-Mails von privaten Postfix-Servern, da 9,99999 von 10 Mal Spammer sind.
Cerin

Das hat bei mir nicht funktioniert. mailutilsAls ich das in das Terminal
eingegeben

Fahren Sie fort und installieren Sie mailutils. Sie benötigen kein Postfix IIRC.
UAV

@Cerin ist richtig. Ich brauchte sehr einfache Mailing-Funktionen für einen Cron-Job. Um dieses Problem zu umgehen, können Sie, wenn Sie über ein Google Mail-Konto empfangen, einen Filter für die E-Mail einrichten (über Schlüsselwörter oder die Absenderadresse) und das Senden durch Google Mail zulassen.
Carrie Kendall

15

Installieren Sie das Paket und geben Sie sendmaildann Folgendes ein

sendmail -t receiver@example 

Schreiben Sie dann Ihre E-Mail und drücken Sie Strg + D


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

oder

cat "afile" | mail -s "subject" someone@dest_email.com

Nur zum einfachen Testen hinzufügen: Echo "Hallo Welt!" | mail -s "Hallo" mail@example.org
Bohne

2
Wenn jemand den Mail-Befehl nicht hat, führen Sie ihn einfach aus: sudo apt-get install mailutilsin Ubuntu / Debian oder yum install mailxin CentOS / Redhat
Giovanni Benussi

9

Sie können eine E-Mail über die Befehlszeile mit TelNet oder NetCat senden .

Alles wird erklärt hier .

hanoo@hp_laptop% nc 127.0.0.1 25
220 hp_laptop.localdomain ESMTP Postfix
EHLO man
250 hp_laptop.localdomain
MAIL FROM: <netcat@postfix.com>
250 2.1.0 Ok
RCPT TO: <target@host.com>
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

2
Es ist ein wenig schwierig, SSL zu verwenden, wenn Sie diese Methode verwenden;)
iX3

1
@ iX3 nur verwenden swaksund Sie sind auch mit SSL / TLS in Ordnung ;-)
Germar

Oderopenssl s_client -starttls smtp ...
Raman

7

Wenn Sie versuchen, E-Mails von einem System aus zu versenden, das keinen eigenen E-Mail-Server (dh Desktop-System) betreibt, müssen Sie so etwas wie nullmailer oder esmtp installieren , die Ihre lokale Mail an eine "echte" Mail weiterleiten Server.

Als Kommandozeilen-Tools können Sie mail oder mailx installieren (Pakete mailutils, heirloom-mailx oder bsd-mailx). Wenn Sie Anhänge benötigen, versuchen Sie es mit Biabam.


1
Ich mag bsd-mailx für den -E-Befehl und Cronjobs
Effekt

6

Ich habe es noch nie versucht, aber es gibt einen mailBefehl, der Mail senden kann. Siehe man mail .

So testen Sie lokale E-Mails:

echo message | mail username@localhost

6
sudo apt-get install sharutils mailutils
uuencode filename filename | mail user@example.com

Wo filenameist das gleiche: Es steht für Eingabedatei und Remote-Datei.


sudo apt-get install sharutilsfüruuencode
Janus Troelsen

1
mailutils installiert mysql! oO
chmike

3

Sie können dies versuchen:

mail name@mailserver.com -s "Attached file" <<EOF                 
Hi

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

EOF

Es funktioniert mit GNU Mailutils. Weitere Informationen finden Sie auf der Website.


2

Ausführen :

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

Folgendes muss dort hinzugefügt werden:

# The user that gets all the mails (UID < 1000, usually the admin)
root=yourusernameofgmail@gmail.com

# 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

Ausführen :

sudo -H gedit /etc/ssmtp/revaliases

Geben Sie dort ein:

root:yourusernameofgmail@gmail.com:smtp.gmail.com:587

Aktivieren Sie "weniger sichere Apps" in Google Mail:
https://support.google.com/accounts/answer/6010255?hl=de

Testen Sie es, indem Sie Folgendes auf dem Terminal ausführen:

echo "Body of mail is abc" | mail -s "Subject is xyz" "someusername@gmail.com"`

1

Außerdem habe ich immer noch diesen Fehler erhalten

echo "Test message from Linux server using ssmtp" | sudo ssmtp -vvv  somebody@mil.gov
[<-] 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)

LÖSUNG: Führen Sie ein Zurücksetzen des Google Mail-Passworts durch, auch wenn das aktuelle Passwort korrekt ist

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.