Wie sende ich eine E-Mail über die Befehlszeile oder das Skript? Ich möchte das Skript programmgesteuert ausführen können, indem ich den Empfänger und die Nachricht übergebe.
Wie sende ich eine E-Mail über die Befehlszeile oder das Skript? Ich möchte das Skript programmgesteuert ausführen können, indem ich den Empfänger und die Nachricht übergebe.
Antworten:
mail -s subject someone@example.com
Geben Sie Ihre Nachricht ein und drücken Sie, um den Vorgang Ctrl+D
zu beenden
echo This will be the body of the email | mail -s "This is the Subject" destination@example.com
Mir sind zwei Programme bekannt, mit denen Sie Ihren Mac problemlos so konfigurieren können, dass E-Mails über die Befehlszeile gesendet werden.
Ich habe für beide HOWTOs geschrieben:
Von den beiden schlage ich vor msmtp
.
Die Konfiguration ist so kompliziert, dass ich nicht sicher bin, ob ich alle Schritte hier replizieren soll, aber ich werde erwähnen, dass Sie msmtp installieren können , wenn Sie Homebrew verwenden
brew install msmtp --with-macosx-keyring
Der Rest ist nur eine Frage des Einrichtens der zugehörigen Konfigurationsdateien
Das erste ist /usr/local/etc/msmtprc
# Begin msmtprc
# Set default values for all following accounts.
defaults
tls on
logfile ~/.msmtp.log
# A first gmail address
account example@gmail.com
host smtp.gmail.com
port 587
protocol smtp
auth on
from example@gmail.com
user example@gmail.com
tls on
tls_starttls on
# this next line is crucial: you have to point to the correct security certificate for GMail.
# If this doesn't work, check the mstmp documentation
# at http://msmtp.sourceforge.net/documentation.html for help
#
# This next line should all be on one long line:
tls_trust_file /path/to/Thawte Roots/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem
# Set a default account
# You need to set a default account for Mail
account default : example@gmail.com
# end msmtprc
Beachten Sie, dass die tls_trust_file
Zeile auf die Stelle verweisen sollte, an der Sie die Zertifikate von https://www.thawte.com/roots/index.html heruntergeladen und installiert haben .
Ich habe meine in ~/Dropbox/Thawte Roots
so, dass ich es auf allen meinen Macs haben kann.
Dann benötigen Sie eine ~/.mailrc
Datei, um anzugeben, wo sich die msmtp-Binärdatei befindet. Wenn Sie es verwenden brew
, /usr/local/bin/msmtp
sieht die Datei folgendermaßen aus:
set sendmail="/usr/local/bin/msmtp"
Der letzte, aber entscheidende Schritt besteht darin, sicherzustellen, dass Ihr Schlüsselbund die Informationen genau in dem von msmtp erwarteten Format enthält:
Ich denke, das deckt die meisten Details ab. Weitere Informationen finden Sie unter http://www.tuaw.com/2010/05/04/msmtp-a-free-tool-to-send-email-from-terminal/ .
example@gmail.com
Ihre Google Mail- oder Google Apps-E-Mail-Adresse.
~/.msmtprc
Die einfachste Methode zum Senden von E-Mails ist eine Telnet-Sitzung mit dem SMTP-Server Ihres Providers / Netzwerks. Nachdem Sie den Server kontaktiert haben und nach jedem Befehl antwortet der Server, wenn er den Befehl mit "250 OK" annimmt oder wenn keine Fehlermeldung angezeigt wird.
Alle Details finden Sie in RFC2821 - Simple Mail Transfer Protocol, Google dafür. Diese grundlegende Methode eignet sich hervorragend zum Testen, warum beim Versenden von E-Mails etwas schief geht, aber ich denke, es ist ziemlich kompliziert, das Skript vollständig zu prüfen.
Rufen Sie zuerst eine Befehlszeilenschnittstelle auf Ihrem Computer auf, indem Sie Terminal starten. Fahren Sie dann nacheinander mit den folgenden Befehlen fort.
Öffnen Sie eine Telnet-Sitzung zu Port 25 des SMTP-Servers Ihres Providers / Netzwerks
telnet name_or_ip_of_smtp_server 25
Sagen Sie Hallo und den Internetnamen Ihres Providers / Netzwerks, wie z. B. abc.com
EHLO name_of_your_network
Es wird eine Absenderadresse von = benötigt, die <und> sind Teil des Befehls
MAIL FROM:<your_email_adress>
Geben Sie ein oder mehrere Ziele an. Die <und> sind Teil des Befehls
RCPT TO:<destination_email_address>
RCPT TO:<second_destination_email_address>
RCPT TO:<etc_destination_email_address>
Teilen Sie dem Server mit, dass Sie Daten senden möchten
DATA
Nun sollte der Server antworten, Sie können mit dem Versenden Ihrer E-Mails beginnen und gehen in den Datenmodus
your data
more data
etc
Beenden Sie jetzt Daten mit einem Punkt als Zeichen in einer Zeile
.
Der Server kehrt in den Befehlsmodus zurück, damit Sie ihn beenden können
QUIT
Dies funktionierte für mich, es wurde für Lion geschrieben, funktioniert aber für Mountain Lion. Übrigens verwendet Google Mail, wenn Sie nicht ...
Sie müssen nichts herunterladen! (Richten Sie einfach ein Google Mail-Konto ein.)
http://www.anujgakhar.com/2011/12/09/using-macosx-lion-command-line-mail-with-gmail-as-smtp/
Konfigurieren Sie Postfix für Gmail SMTP. Bearbeiten Sie die Datei /etc/postfix/main.cf
sudo vim /etc/postfix/main.cf
und füge im Folgenden die auskommentierten Relayhosts hinzu: -
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
smtp_sasl_mechanism_filter = plain
Generieren Sie sasl_password, falls es noch nicht existiert
sudo vim /etc/postfix/sasl_passwd
und geben Sie Folgendes ein: -
[smtp.gmail.com]:587 username@gmail.com:password
Führen Sie die folgenden Befehle aus
sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd
sudo launchctl stop org.postfix.master
sudo launchctl start org.postfix.master
Und du bist fertig ...
Nun sollten Sie in der Lage sein, E-Mails über die Befehlszeile zu senden, um beispielsweise den Inhalt eines Verzeichnisses als Baum an eine E-Mail-Adresse zu senden
tree /var/www/somefolder | mail -s "contents" your@yourdomain.com
mtcmail ist eine weitere Option: http://www.macupdate.com/app/mac/33505/mtcmail-cli .
[Ignorieren Sie diesen zusätzlichen Text. Hinzugefügt, weil: body mindestens 30 Zeichen haben muss; du hast 27 eingegeben.]
Da es auf Unix basiert, können Sie den Befehl sendmail verwenden .