Wie sende ich eine E-Mail vom Terminal?

169

Ich weiß, dass es unter Linux / MacOS Möglichkeiten gibt, E-Mails vom Terminal aus zu senden, aber ich finde anscheinend keine richtige Dokumentation dazu.

Grundsätzlich brauche ich es für mein Bash-Skript, das mich jedes Mal benachrichtigt, wenn sich eine Datei ändert.

NoobDev4iPhone
quelle
3
Hierbei ist wahrscheinlich zu beachten, dass einige Hosts und ISPs die Möglichkeit zum Senden von E-Mails "deaktivieren". Ich nehme an, es ist ein Versuch, Leute davon abzuhalten, durch sie zu spammen und zu phishing
Jim Jeffries
@ JimJeffries Welche? Ich verwende einen Amazon EC2-Webserver.
ckjbgames

Antworten:

125

Gehen Sie in das Terminal und geben Sie man mailHilfe ein.

Sie müssen Folgendes einrichten SMTP:

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

Siehe auch:

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

Z.B:

mail -s "hello" "[email protected]" <<EOF
hello
world
EOF

Dadurch wird eine E-Mail [email protected]mit dem Betreff hellound der Nachricht gesendet

Hallo

Welt

Gadgetmo
quelle
Ich habe es gerade versucht und es hat bei mir funktioniert, aber ich habe zwei Fragen aus Neugier.1. Was bedeutet <<, online habe ich einige Beispiele mit '<' oder '<< gesehen. ' Was wird es verwendet? Und warum haben Sie dort und am Ende der Nachricht das Ende der Datei angegeben?
Deep
Die "<< EOF" und "EOF" markieren ein "Here-Dokument". Der Text zwischen den beiden EOFs wird als mehrzeilige Zeichenfolge in Anführungszeichen behandelt. Es wird in 'man bash'
Joe Inwap
134
echo "this is the body" | mail -s "this is the subject" "to@address"
Earldouglas
quelle
20
Beachten Sie, dass alle diese Lösungen davon ausgehen, dass Sie einen lokal installierten MTA
Miquel
11
@ Miquel guter Punkt. In Ubuntu können Sie die Voraussetzungen über erhalten sudo apt-get install mailutils.
Earldouglas
3
@ James, es funktioniert nicht für meinen MAC (((Könnten Sie mir helfen?
Neo
1
Schritt für Schritt Tutorial: rianjs.net/2013/08/…
Dušan Maďar
Seltsam. Dies gibt mir die Meldung "SyntaxError: ungültige Syntax", obwohl ich nur die Adresse geändert habe.
Jewenile
41

Wenn Sie nur eine Betreffzeile benötigen (wie in einer Warnmeldung), gehen Sie einfach wie folgt vor:

mailx -s "This is all she wrote" < /dev/null "myself@myaddress"
JRFerguson
quelle
Möglicherweise müssen Sie installieren mailutils. Es kann über einen Paketmanager (z. B. apt install mailutils) installiert werden
Jeevan Takhar
31

Der wahrscheinlich einfachste Weg ist, curldies zu verwenden. Es müssen keine zusätzlichen Pakete installiert werden, und es kann direkt in einer Anfrage konfiguriert werden.

Hier ist ein Beispiel für die Verwendung des Google Mail-SMTP-Servers:

curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd \
  --mail-from '[email protected]' \
  --mail-rcpt '[email protected]' \
  --user '[email protected]:YourPassword' \
  -T <(echo -e 'From: [email protected]\nTo: [email protected]\nSubject: Curl Test\n\nHello')
Aliaksandr Sushkevich
quelle
Dies ist eine wirklich gute Option. Sie können ein app-spezifisches Passwort für Ihr Google-Konto generieren, das nur die E-Mail von Ihrem eigenen Konto aus übermittelt. Sehr cool!
Dakdad
2
Tolle Antwort: Vergessen Sie nicht, die weniger sichere App einzuschalten
yubaraj poudel
@aliaksandr sollte diesen letzten Punkt zu seiner Antwort hinzufügen. Standardmäßig ist diese Option (Zugriff auf weniger sichere Apps gewähren) deaktiviert und nicht ersichtlich. Zumindest, wenn Sie ein Google Mail-Konto als Absender-E-Mail verwenden.
EAmez
18

Wenn Sie eine Datei unter Linux anhängen möchten

echo 'mail content' | mailx -s 'email subject' -a attachment.txt username@stackoverflow.com
MiaeKim
quelle
4
Es gibt eine invalid headerNachricht für meine angehängte Datei. Die richtige Option war ein Großbuchstabe -A.
Stephane
3
@Stephane Laut Patrick-Haugh ist -a der Befestigungsschalter. -A ist für den Account-Befehl. Siehe die Manpage: linux.die.net/man/1/mailx
MiaeKim
10

Geben Sie diesen Code in das Terminal Ihres Mac OS oder Linux OS ein

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

Versuchen Sie dies zum Beispiel

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