Come inviare un'e-mail dalla riga di comando o dallo script? Voglio essere in grado di eseguire lo script a livello di codice passando il destinatario e il messaggio.
Come inviare un'e-mail dalla riga di comando o dallo script? Voglio essere in grado di eseguire lo script a livello di codice passando il destinatario e il messaggio.
Risposte:
mail -s subject someone@example.com
digitare il messaggio, premere Ctrl+D
per terminare
echo This will be the body of the email | mail -s "This is the Subject" destination@example.com
Ci sono due programmi di cui sono a conoscenza che ti permetteranno facilmente di configurare il tuo Mac per inviare e-mail dalla riga di comando.
Ho scritto HOWTO per entrambi:
Dei due, suggerisco msmtp
.
La configurazione è abbastanza complicata che non sono sicuro se dovrei replicare tutti i passaggi qui, ma menzionerò che se usi Homebrew puoi installare msmtp usando
brew install msmtp --with-macosx-keyring
Quindi il resto è solo una questione di impostazione dei relativi file di configurazione
Il primo è /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
Nota che la tls_trust_file
linea dovrebbe puntare a dove hai scaricato e installato i certificati da https://www.thawte.com/roots/index.html .
Ho inserito il mio in ~/Dropbox/Thawte Roots
modo da poterlo avere su tutti i miei Mac.
Quindi è necessario un ~/.mailrc
file per dire dove si trova il binario msmtp. Se lo usi brew
, /usr/local/bin/msmtp
il file sarà simile al seguente:
set sendmail="/usr/local/bin/msmtp"
L'ultimo ma cruciale passo è assicurarsi che il tuo Portachiavi abbia le informazioni esattamente nel formato che msmtp si aspetta:
Penso che copra la maggior parte dei dettagli. Vedi http://www.tuaw.com/2010/05/04/msmtp-a-free-tool-to-send-email-from-terminal/ se vuoi qualche dettaglio in più.
example@gmail.com
al tuo indirizzo email Gmail o Google Apps.
~/.msmtprc
Il modo più semplice per inviare la posta è attraverso una sessione telnet con il server smtp del proprio provider / rete. Dopo aver contattato il server e dopo ogni comando, il server risponderà se accetta il comando con qualcosa come "250 OK" o se non con un messaggio di errore.
Tutti i dettagli sono disponibili in RFC2821 - Simple Mail Transfer Protocol, Google. Questo modo di base è ottimo per verificare perché qualcosa non va nell'invio della posta, ma penso che sia abbastanza complicato scriverne la prova completa.
Innanzitutto ottenere un'interfaccia della riga di comando sul computer, avviando Terminal. Quindi continua con i seguenti comandi, uno dopo l'altro.
Aprire una sessione telnet sulla porta 25 del server smtp del proprio provider / rete
telnet name_or_ip_of_smtp_server 25
saluta più il nome internet del tuo provider / rete, come abc.com
EHLO name_of_your_network
è necessario un indirizzo from = return, <e> fanno parte del comando
MAIL FROM:<your_email_adress>
dare una o più destinazioni, <e> fanno parte del comando
RCPT TO:<destination_email_address>
RCPT TO:<second_destination_email_address>
RCPT TO:<etc_destination_email_address>
dire al server che si desidera iniziare a inviare dati
DATA
ora il server dovrebbe rispondere è possibile iniziare a inviare la posta e passare in modalità dati
your data
more data
etc
ora finisci i dati con un punto come solo carattere su una linea
.
il server torna in modalità comando in modo da poter uscire
QUIT
Questo ha funzionato per me, è stato scritto pensando a Lion ma funziona per Mountain Lion. A proposito questo sta usando Gmail quindi se non sei ...
Non è necessario scaricare nulla! (basta configurare un account Gmail)
http://www.anujgakhar.com/2011/12/09/using-macosx-lion-command-line-mail-with-gmail-as-smtp/
Configura Postfix per Gmail Modifica file SMTP /etc/postfix/main.cf
sudo vim /etc/postfix/main.cf
e aggiungere di seguito i relayhosts commentati: -
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
Genera sasl_password se non esiste già
sudo vim /etc/postfix/sasl_passwd
e inserisci quanto segue: -
[smtp.gmail.com]:587 username@gmail.com:password
Esegui i seguenti comandi
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
E hai finito ....
Ora dovresti essere in grado di inviare e-mail dall'interno della riga di comando, ad es. Per inviare il contenuto di una directory come albero a un indirizzo e-mail
tree /var/www/somefolder | mail -s "contents" your@yourdomain.com
mtcmail è un'altra opzione: http://www.macupdate.com/app/mac/33505/mtcmail-cli .
[Ignora questo testo aggiuntivo. Aggiunto perché: il corpo deve contenere almeno 30 caratteri; hai inserito il 27.]
Poiché è basato su Unix, puoi usare il comando sendmail .