Como enviar email do Terminal?

169

Eu sei que existem maneiras de enviar email do terminal no Linux / MacOS, mas não consigo encontrar a documentação adequada sobre como fazer isso.

Basicamente, eu preciso dele para o meu script bash que me notifica toda vez que há uma alteração em um arquivo.

NoobDev4iPhone
fonte
3
Provavelmente, deve-se notar aqui que alguns hosts e ISPs "desativam" a capacidade de você enviar email. Eu presumo que é uma tentativa de impedir as pessoas de spam e phishing através deles
Jim Jeffries
@JimJeffries Quais? Estou usando um servidor da web Amazon EC2.
Ckjbgames

Respostas:

125

Entre no Terminal e digite man mailpara obter ajuda.

Você precisará configurar SMTP:

http://hints.macworld.com/article.php?story=20081217161612647

Veja também:

http://www.mactricksandtips.com/2008/09/send-mail-over-your-network.html

Por exemplo:

mail -s "hello" "[email protected]" <<EOF
hello
world
EOF

Isso enviará um email para [email protected]o assunto helloe a mensagem

Olá

Mundo

gadgetmo
fonte
Eu apenas tentei, e funcionou para mim, mas tenho duas perguntas por curiosidade. O que << significa, on-line Já vi alguns exemplos com '<' ou '<<. ' Para que isso é usado? E por que você deu o fim do arquivo lá e no final da mensagem?
Profundo
O "<< EOF" e "EOF" marcam um "documento aqui". O texto entre os dois EOFs é tratado como uma cadeia de caracteres entre linhas. É descrito em 'man bash'
Joe Inwap 06/04
134
echo "this is the body" | mail -s "this is the subject" "to@address"
Earldouglas
fonte
20
Nota todo este soluções assumir que tem um MTA instalado localmente
Miquel
11
@Miquel bom ponto. No Ubuntu, você pode obter os pré-requisitos via sudo apt-get install mailutils.
earldouglas
3
@ James, não é trabalho para o meu MAC (((Você poderia me ajudar? #
neo
1
Tutorial passo a passo: rianjs.net/2013/08/…
Dušan Maďar
Estranho. Isso me dá uma mensagem "SyntaxError: sintaxe inválida", embora a única alteração que fiz foi a alteração do endereço.
1911 Jewenile
41

Se tudo o que você precisa é de uma linha de assunto (como em uma mensagem de alerta), faça:

mailx -s "This is all she wrote" < /dev/null "myself@myaddress"
JRFerguson
fonte
Pode ser necessário instalar mailutils. Ele pode ser instalado através de um gerenciador de pacotes (eg. apt install mailutils)
Jeevan Takhar
31

Provavelmente, a maneira mais simples é usar curlisso, não há necessidade de instalar nenhum pacote adicional e ele pode ser configurado diretamente em uma solicitação.

Aqui está um exemplo usando o servidor SMTP do Gmail:

curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd \
  --mail-from '[email protected]' \
  --mail-rcpt '[email protected]' \
  --user '[email protected]:YourPassword' \
  -T <(echo -e 'From: [email protected]\nTo: [email protected]\nSubject: Curl Test\n\nHello')
Aliaksandr Sushkevich
fonte
Esta é realmente uma boa opção. Você pode gerar uma senha específica do aplicativo para sua conta do Google e isso apenas envia o e-mail da sua própria conta. Muito legal!
dakdad 12/09/19
2
Grande resposta, Por último não se esqueça de ligar o aplicativo menos seguro para fazer trabalho myaccount.google.com/lesssecureapps
yubaraj Poudel
@aliaksandr deve adicionar este último ponto à sua resposta. Por padrão, esta opção (conceder acesso a aplicativos menos seguros) está desativada e não é evidente. Pelo menos se você estiver usando a conta do Gmail como email do remetente.
EAmez 26/11
18

Se você deseja anexar um arquivo no Linux

echo 'mail content' | mailx -s 'email subject' -a attachment.txt username@stackoverflow.com
MiaeKim
fonte
4
Dá uma invalid headermensagem para o meu arquivo anexado. A opção correta era maiúscula -A.
Stephane
3
@ Stephanie De acordo com patrick-haugh, -a é o interruptor de conexão. -A é para o comando da conta. Veja a página de manual
MiaeKim
10

no terminal do seu Mac OS ou Linux OS, digite este código

mail -s (subject) (receiversEmailAddress)  <<< "how are you?"

por exemplo, tente isso

mail -s "hi" abc@example.com <<< "how are you?"<br>
Pramodya Abeysinghe
fonte