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

215

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

Olivier Lalonde
quelle
1
ubuntuforums.org/showthread.php?t=780509 kann Ihnen helfen.
Benutzer
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 :-)

crncosta
quelle
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:

    [email protected]
    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 [email protected]
    
  5. Geben Sie die Nachrichtendetails wie folgt an:

    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. Drücken Sie zum Senden Ctrl+ D.


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

ssmtp [email protected] < filename.txt
Sid
quelle
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 [email protected] <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 [email protected]
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.

Marco Ceppi
quelle
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 [email protected] -t [email protected] -u subject -m "message" -s smtp.gmail.com:587 -o tls=yes -xu [email protected] -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.

Jet
quelle
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 [email protected]
BozoJoe
quelle
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' [email protected]

HILFE

Eine Null
quelle
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

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

oder

cat "afile" | mail -s "subject" someone@dest_email.com
user142345
quelle
Nur zum einfachen Testen hinzufügen: Echo "Hallo Welt!" | mail -s "Hallo" [email protected]
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: <[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
quelle
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.

ddeimeke
quelle
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
dv3500ea
quelle
6
sudo apt-get install sharutils mailutils
uuencode filename filename | mail [email protected]

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

nisse
quelle
sudo apt-get install sharutilsfüruuencode
Janus Troelsen
1
mailutils installiert mysql! oO
chmike
3

Sie können dies versuchen:

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

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

EOF

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

Scharade
quelle
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)
[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

Ausführen :

sudo -H gedit /etc/ssmtp/revaliases

Geben Sie dort ein:

root:[email protected]: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" "[email protected]"`
Wassermann_Mädchen
quelle
1

Außerdem habe ich immer noch diesen Fehler erhalten

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)

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

Scott Stensland
quelle