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.


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" "example@example.com" <<EOF
hello
world
EOF

Isso enviará um email para example@example.como assunto helloe a mensagem

Olá

Mundo


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"

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"

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 'from-email@gmail.com' \
  --mail-rcpt 'to-email@gmail.com' \
  --user 'from-email@gmail.com:YourPassword' \
  -T <(echo -e 'From: from-email@gmail.com\nTo: to-email@gmail.com\nSubject: Curl Test\n\nHello')

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

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>

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.