Come inviare un messaggio di posta elettronica dalla riga di comando?

26

Come inviare un messaggio di posta elettronica dalla riga di comando o dallo script? Voglio essere in grado di eseguire lo script in modo programmatico passando il destinatario e il messaggio.

    
posta michelemarcon 19.04.2011 - 11:57
fonte

7 risposte

21

mail -s subject [email protected] digita il tuo messaggio, premi Ctrl+D per finire

    
risposta data 19.04.2011 - 12:31
fonte
24

Ci sono due programmi di cui sono a conoscenza e che ti permetteranno facilmente di configurare il tuo Mac per inviare email dalla riga di comando.

Ho scritto degli HOWTO per entrambi:

Tra i due, suggerisco msmtp .

La configurazione è abbastanza complicata da non essere 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 riguarda solo la configurazione 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 [email protected]
host smtp.gmail.com
port 587
protocol smtp
auth on
from [email protected]
user [email protected]
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 : [email protected]

# end msmtprc

Tieni presente che la riga tls_trust_file deve indicare dove hai scaricato e installato i certificati da link .

Metto il mio in ~/Dropbox/Thawte Roots in modo che possa averlo su tutti i miei Mac.

Quindi hai bisogno di un file ~/.mailrc per dire dove si trova il binario msmtp. Se utilizzi brew sarà /usr/local/bin/msmtp in modo che il file assomigli a questo:

set sendmail="/usr/local/bin/msmtp"

L'ultimo ma fondamentale passaggio è assicurarsi che il tuo portachiavi contenga esattamente le informazioni nel formato che msmtp si aspetta:

Pensocheriguardilamaggiorpartedeidettagli.Vedi link se vuoi qualche altro specifico.

    
risposta data 12.02.2012 - 21:15
fonte
12

Questo ha funzionato per me, è stato scritto pensando a Lion ma lavora per Mountain Lion. A proposito, sta usando Gmail quindi se non lo sei ...

Non è necessario scaricare nulla! (basta configurare un account Gmail)

link

Configura Postfix per Gmail SMTP Modifica il file /etc/postfix/main.cf

sudo vim /etc/postfix/main.cf

e aggiungi i seguenti relayhosts commentati qui sotto: -

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

Genera sasl_password se non esiste già

sudo vim /etc/postfix/sasl_passwd

e inserisci quanto segue: -

[smtp.gmail.com]:587 [email protected]: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 dalla riga di comando, ad es. per inviare il contenuto di una directory come albero a un indirizzo email

tree /var/www/somefolder | mail -s "contents" [email protected]
    
risposta data 24.05.2013 - 06:40
fonte
10

Il modo più semplice per inviare la posta è attraverso una sessione telnet con il server smtp del tuo provider / network. 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 possono essere trovati in RFC2821 - Simple Mail Transfer Protocol, Google per questo. Questo metodo di base è ottimo per testare il motivo per cui qualcosa va storto inviando posta, ma penso che sia piuttosto complicato copiarlo a pieno titolo.

Per prima cosa procurati un'interfaccia della riga di comando sul tuo computer, avviando Terminal. Quindi continua con i seguenti comandi, uno dopo l'altro.

Apri una sessione telnet sulla porta 25 del server smtp del tuo provider / rete

telnet name_or_ip_of_smtp_server 25

dì ciao più il nome internet del tuo provider / rete, come abc.com

EHLO name_of_your_network

a from = è necessario l'indirizzo di ritorno, < e > fanno parte del comando

MAIL FROM:<your_email_adress>

indica 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>

indica al server che vuoi iniziare a inviare dati

DATA

ora il server dovrebbe rispondere puoi iniziare a inviare la posta e andare in modalità dati

your data
more data
etc

ora finisci i dati con un punto come solo carattere su una riga

.

il server torna alla modalità di comando in modo da poter uscire

QUIT
    
risposta data 12.02.2012 - 23:10
fonte
0

mtcmail è un'altra opzione: link .

[Ignora questo testo aggiuntivo. Aggiunto perché: il corpo deve contenere almeno 30 caratteri; hai inserito 27.]

    
risposta data 11.11.2012 - 00:34
fonte
0

Puoi controllare postfixconf che abilita e configura OS X per inviare e-mail dalla riga di comando (usando il tuo input) .

Si basa sulla configurazione postfix che è ben documentata sul web qui , qui e qui .

    
risposta data 29.07.2016 - 22:24
fonte
-3

Poiché è basato su Unix, puoi utilizzare il comando sendmail .

    
risposta data 19.04.2011 - 12:13
fonte

Leggi altre domande sui tag