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.


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" "example@example.com" <<EOF
hello
world
EOF

Dadurch wird eine E-Mail example@example.commit dem Betreff hellound der Nachricht gesendet

Hallo

Welt


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"

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"

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 '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')

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

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>

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.