Como enviar um email a partir da linha de comando ou script? Quero poder executar o script programaticamente passando o receptor e a mensagem.
Como enviar um email a partir da linha de comando ou script? Quero poder executar o script programaticamente passando o receptor e a mensagem.
Respostas:
mail -s subject someone@example.com
digite sua mensagem, pressione Ctrl+D
para finalizar
echo This will be the body of the email | mail -s "This is the Subject" destination@example.com
Estou ciente de dois programas que permitirão que você configure facilmente o seu Mac para enviar e-mails a partir da linha de comando.
Eu escrevi HOWTOs para os dois:
Dos dois, eu sugiro msmtp
.
A configuração é bastante complicada e não tenho certeza se devo replicar todas as etapas aqui, mas mencionarei que, se você usar o Homebrew, poderá instalar o msmtp usando
brew install msmtp --with-macosx-keyring
O restante é apenas uma questão de configurar os arquivos de configuração relacionados
O primeiro é /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
Observe que a tls_trust_file
linha deve apontar para onde você baixou e instalou os certificados em https://www.thawte.com/roots/index.html .
Coloquei o meu ~/Dropbox/Thawte Roots
para poder usá- lo em todos os meus Macs.
Então você precisa de um ~/.mailrc
arquivo para dizer onde o binário msmtp está localizado. Se você usá brew
- /usr/local/bin/msmtp
lo, o arquivo ficará assim:
set sendmail="/usr/local/bin/msmtp"
O último passo, porém crucial, é garantir que o seu Keychain tenha as informações exatamente no formato que o msmtp espera:
Eu acho que isso cobre a maioria dos detalhes. Consulte http://www.tuaw.com/2010/05/04/msmtp-a-free-tool-to-send-email-from-terminal/ se desejar mais alguns detalhes.
example@gmail.com
para o seu endereço de e-mail do Gmail ou do Google Apps.
~/.msmtprc
A maneira mais básica de enviar email é através de uma sessão de telnet com o servidor smtp do seu provedor / rede. Depois de entrar em contato com o servidor e após cada comando, o servidor responderá se aceitar o comando com algo como "250 OK" ou se não estiver com uma mensagem de erro.
Todos os detalhes podem ser encontrados no RFC2821 - Simple Mail Transfer Protocol, do Google. Essa maneira básica é ótima para testar por que algo dá errado no envio de mensagens, mas acho que é bastante complicado criar um script completo.
Primeiro, obtenha uma interface de linha de comando no seu computador, iniciando o Terminal. Continue com os seguintes comandos, um após um.
Abra uma sessão de telnet para a porta 25 do servidor smtp do seu provedor / rede
telnet name_or_ip_of_smtp_server 25
diga olá mais o nome da Internet do seu provedor / rede, como abc.com
EHLO name_of_your_network
é necessário um endereço from = return, <e> fazem parte do comando
MAIL FROM:<your_email_adress>
fornecer um ou mais destinos, os <e> fazem parte do comando
RCPT TO:<destination_email_address>
RCPT TO:<second_destination_email_address>
RCPT TO:<etc_destination_email_address>
diga ao servidor que você deseja começar a enviar dados
DATA
agora o servidor deve responder, você pode começar a enviar seu e-mail e entrar no modo de dados
your data
more data
etc
agora termine os dados com um ponto, como apenas caracteres em uma linha
.
o servidor volta ao modo de comando para que você possa sair
QUIT
Isso funcionou para mim, foi escrito com o Lion em mente, mas funciona para o Mountain Lion. Btw isso está usando o Gmail, então se você não estiver ...
Você não precisa baixar nada! (basta configurar uma conta do Gmail)
http://www.anujgakhar.com/2011/12/09/using-macosx-lion-command-line-mail-with-gmail-as-smtp/
Configurar o Postfix para o arquivo de edição SMTP do Gmail /etc/postfix/main.cf
sudo vim /etc/postfix/main.cf
e adicione o seguinte abaixo os relayhosts comentados: -
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
Gere sasl_password se ainda não existir
sudo vim /etc/postfix/sasl_passwd
e digite o seguinte: -
[smtp.gmail.com]:587 username@gmail.com:password
Execute os seguintes comandos
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 você terminou.
Agora, você poderá enviar e-mails de dentro da linha de comando, por exemplo, para enviar o conteúdo de um diretório como uma árvore para um endereço de e-mail
tree /var/www/somefolder | mail -s "contents" your@yourdomain.com
O mtcmail é outra opção: http://www.macupdate.com/app/mac/33505/mtcmail-cli .
[Ignore este texto adicional. Adicionado porque: o corpo deve ter pelo menos 30 caracteres; você inseriu 27.]
Como é baseado em Unix, você pode usar o comando sendmail .