Jak wysłać wiadomość e-mail z wiersza polecenia lub skryptu? Chcę móc programowo uruchomić skrypt, przekazując odbiornik i komunikat.
Jak wysłać wiadomość e-mail z wiersza polecenia lub skryptu? Chcę móc programowo uruchomić skrypt, przekazując odbiornik i komunikat.
Odpowiedzi:
mail -s subject someone@example.com
wpisz swoją wiadomość, naciśnij, Ctrl+D
aby zakończyć
echo This will be the body of the email | mail -s "This is the Subject" destination@example.com
Są dwa programy, o których wiem, że z łatwością pozwolą Ci skonfigurować komputer Mac do wysyłania wiadomości e-mail z wiersza polecenia.
Dla obu z nich napisałem HOWTO:
Z tych dwóch proponuję msmtp
.
Konfiguracja jest na tyle skomplikowana, że nie jestem pewien, czy powinienem zreplikować wszystkie kroki tutaj, ale wspomnę, że jeśli używasz Homebrew , możesz zainstalować msmtp za pomocą
brew install msmtp --with-macosx-keyring
Reszta to tylko kwestia skonfigurowania powiązanych plików konfiguracyjnych
Pierwszy to /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
Zauważ, że tls_trust_file
wiersz powinien wskazywać, gdziekolwiek pobrałeś i zainstalowałeś certyfikaty z https://www.thawte.com/roots/index.html .
Wstawiam mój, ~/Dropbox/Thawte Roots
aby móc go mieć na wszystkich moich komputerach Mac.
Następnie potrzebujesz ~/.mailrc
pliku, aby powiedzieć, gdzie znajduje się plik binarny msmtp. Jeśli brew
go użyjesz , /usr/local/bin/msmtp
plik będzie wyglądał następująco:
set sendmail="/usr/local/bin/msmtp"
Ostatnim, ale kluczowym krokiem jest upewnienie się, że Twój pęku kluczy ma informacje dokładnie w formacie, którego oczekuje od msmtp:
Myślę, że dotyczy to większości szczegółów. Zobacz http://www.tuaw.com/2010/05/04/msmtp-a-free-tool-to-send-email-from-terminal/, jeśli chcesz uzyskać więcej informacji.
example@gmail.com
na adres e-mail Gmaila lub Google Apps.
~/.msmtprc
Najbardziej podstawowym sposobem wysyłania poczty jest sesja telnet z serwerem smtp twojego dostawcy / sieci. Po skontaktowaniu się z serwerem i po każdym poleceniu serwer odpowie, jeśli przyjmie polecenie, np. „250 OK” lub komunikat o błędzie nie.
Wszystkie szczegóły można znaleźć w RFC2821 - Simple Mail Transfer Protocol, Google dla niego. Ten podstawowy sposób jest świetny do testowania, dlaczego coś idzie nie tak podczas wysyłania poczty, ale myślę, że dość skomplikowane jest napisanie pełnego dowodu.
Najpierw uzyskaj interfejs wiersza polecenia na swoim komputerze, uruchamiając Terminal. Następnie wykonaj następujące polecenia, jeden po drugim.
Otwórz sesję telnet do portu 25 serwera smtp twojego dostawcy / sieci
telnet name_or_ip_of_smtp_server 25
przywitaj się i nazwa internetowa Twojego dostawcy / sieci, np. abc.com
EHLO name_of_your_network
potrzebny jest adres zwrotny od =, <i> są częścią polecenia
MAIL FROM:<your_email_adress>
podaj jedno lub więcej miejsc docelowych, <i> są częścią polecenia
RCPT TO:<destination_email_address>
RCPT TO:<second_destination_email_address>
RCPT TO:<etc_destination_email_address>
powiedz serwerowi, że chcesz rozpocząć wysyłanie danych
DATA
teraz serwer powinien odpowiedzieć, możesz rozpocząć wysyłanie poczty i przejść do trybu danych
your data
more data
etc
teraz zakończ dane kropką jako znakiem tylko na linii
.
serwer wraca do trybu poleceń, więc możesz wyjść
QUIT
To działało dla mnie, zostało napisane z myślą o Lionie, ale działa dla Mountain Lion. Przy okazji używa Gmaila, więc jeśli nie jesteś ...
Nie musisz niczego pobierać! (wystarczy skonfigurować konto Gmail)
http://www.anujgakhar.com/2011/12/09/using-macosx-lion-command-line-mail-with-gmail-as-smtp/
Skonfiguruj Postfix dla Gmaila SMTP Edytuj plik /etc/postfix/main.cf
sudo vim /etc/postfix/main.cf
i dodaj poniżej poniższe komentarzehosthosts: -
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
Wygeneruj hasło sasl, jeśli jeszcze nie istnieje
sudo vim /etc/postfix/sasl_passwd
i wprowadź następujące dane:
[smtp.gmail.com]:587 username@gmail.com:password
Uruchom następujące polecenia
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
I skończysz…
Teraz powinieneś być w stanie wysyłać wiadomości e-mail z poziomu wiersza poleceń, np. Aby wysłać zawartość katalogu jako drzewa na adres e-mail
tree /var/www/somefolder | mail -s "contents" your@yourdomain.com
mtcmail to kolejna opcja: http://www.macupdate.com/app/mac/33505/mtcmail-cli .
[Zignoruj ten dodatkowy tekst. Dodano, ponieważ: treść musi mieć co najmniej 30 znaków; wszedłeś 27.]
Ponieważ jest oparty na Uniksie, możesz użyć polecenia sendmail .