Como enviar um email usando a linha de comando? [duplicado]

11

Veja o que eu tenho:

cat UserReport.txt | mail -s "TestSubject" "[email protected]"

É um arquivo pequeno, muito menor que uma foto, por isso deve ser enviado quase instantaneamente. Embora eu não receba nada. Eu instalei mailutils , mas poderia ter instalado incorretamente.

Como posso enviar um email a partir de um script bash?

    
por Roboman1723 10.09.2014 / 17:43

3 respostas

21

Primeiro de tudo, você precisa instalar e configurar o Postfix para usar o Gmail SMTP no Ubuntu.

Instale todos os pacotes necessários:

$ sudo apt-get install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules

Se você não tiver o postfix instalado antes, o assistente de configuração do postfix fará algumas perguntas. Basta selecionar seu servidor como Site da Internet e o FQDN usar algo como mail.example.com

Em seguida, abra seu arquivo de configuração do postfix :

$ sudo -H gedit /etc/postfix/main.cf

e adicione as seguintes linhas a ele:

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_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes

Você deve ter notado que não especificamos nosso nome de usuário e senha do Gmail nas linhas acima. Eles entrarão em um arquivo diferente. Abrir / Criar:

$ sudo -H gedit /etc/postfix/sasl_passwd

E adicione a seguinte linha:

[smtp.gmail.com]:587    [email protected]:PASSWORD

Se você quiser usar o domínio do seu aplicativo do Google, substitua @ gmail.com pelo seu @ domain.com .

Corrija a permissão e atualize a configuração do postfix para usar o arquivo sasl_passwd:

$ sudo chmod 400 /etc/postfix/sasl_passwd
$ sudo postmap /etc/postfix/sasl_passwd

Em seguida, valide os certificados para evitar erros. Basta executar o seguinte comando:

$ cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | sudo tee -a /etc/postfix/cacert.pem

Por fim, recarregue a configuração do postfix para que as alterações entrem em vigor:

$ sudo /etc/init.d/postfix reload

Teste

Verifique se os e-mails são enviados pelo servidor SMTP do Gmail

Se você configurou tudo corretamente, o comando a seguir deve gerar um email de teste do seu servidor para a sua caixa postal.

echo "Test mail from postfix" | mail -s "Test Postfix" [email protected]

Para verificar, se o email enviado pelo comando acima for realmente enviado pelo servidor SMTP do Gmail, você poderá fazer login na conta do Gmail [email protected] com a senha e marcar " Enviados" "pasta nessa conta do Gmail. Por padrão, o Gmail sempre mantém uma cópia do e-mail enviado por meio de sua interface da Web e também do servidor SMTP. Esse registro é um motivo strong pelo qual usamos frequentemente o Gmail quando a entrega de e-mails é crítica.

Solução de problemas

Erro: "Falha na autenticação SASL; servidor smtp.gmail.com"

Você precisa desbloquear o captcha visitando esta página link

Você pode executar o teste novamente depois de desbloquear o captcha.
fonte

Você precisa usar a seguinte sintaxe de mail e mutt para enviar e-mails, observe que se você quiser enviar o arquivo anexo através do comando mail não é suporte ou é melhor eu digo que não consigo enviar meu arquivo anexado via mail comando, em vez disso você pode usar a linha de comando mutt , é muito útil. e no comando mutt você tem que digitar argumentos de anexos após o endereço de e-mail. Eu testo e funciona bem.

você pode instalar mutt através deste comando:

$ sudo apt-get install mutt

Usando mail

mail -s "TestSubject" [email protected] -a "UserReport.txt"  < MessageBody.txt

Usando mutt

mutt -s "TestSubject" [email protected] -a "UserReport.txt"  < MessageBody.txt

Embora UserReport.txt seja seu arquivo de anexo, MessageBody é texto / arquivo do seu corpo de e-mail, TestSubject é o assunto do seu e-mail.

-s flag é usado para "Assunto" e -a flag é usado para "Arquivo de anexos"

    
por αғsнιη 10.09.2014 / 17:48
0

Basta fazer isso:

sudo apt-get install msmtp-mta
nano ~/.msmtprc

cole isso usando suas credenciais nas últimas linhas:

account gmail
auth on
host smtp.gmail.com
port 587
auth on
tls on
tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt
from [email protected]
user [email protected]
password yourPassword

account default : gmail

então

nano ~/.mailrc

e cole isto:

set sendmail="/usr/bin/msmtp"
set message-sendmail-extra-arguments="-a gmail"

finalmente envie seu e-mail

mail -s "test" [email protected]
    
por D.Snap 06.04.2016 / 22:39
0

Sua linha pode ser vista no menor caminho, como neste pequeno script de shell:

#!/bin/bash
cat email.txt && sendmail [email protected] < /tmp/email.txt
    
por dschinn1001 15.02.2017 / 02:57