Como enviar email a partir da linha de comando?

215

Como enviar email a partir da linha de comando?

Olivier Lalonde
fonte
1
O ubuntuforums.org/showthread.php?t=780509 pode ajudá-lo.
Utilizador
1
Você também pode usar pinho.
Kaveh
1
Você também pode instalar o msmtp e seguir as instruções descritas no ArchWiki
Thiago Perrotta
2
É uma pena que as respostas para isso estejam desatualizadas. É uma pergunta importante que poderia usar um bom tutorial
6005

Respostas:

36

Tente instalar o cliente de email Mutt . Outra opção é usar o emacs com o gnus . Outras opções disponíveis também ... IMHO, você deve usar mais detalhes em suas perguntas, ou várias respostas diferentes para sua pergunta, você receberá :-)

crncosta
fonte
2
Aceitou este, pois não requer nenhuma configuração e é bastante fácil de usar.
Olivier Lalonde
21
esperar. vira-lata - amigável? o mais louco de uma linha que eu li hoje :)
Stann
155
  1. Instale o ssmtp Instalar ssmtp :

    sudo apt-get install ssmtp
    
  2. Edite o arquivo de configuração ssmtp:

    gksu gedit /etc/ssmtp/ssmtp.conf
    
  3. Anexe o seguinte texto:

    [email protected]
    mailhub=smtp.gmail.com:465
    rewriteDomain=gmail.com
    AuthUser=username
    AuthPass=password
    FromLineOverride=YES
    UseTLS=YES
    
  4. Execute o ssmtp e forneça o endereço de email do destinatário:

    ssmtp [email protected]
    
  5. Forneça os detalhes da mensagem da seguinte maneira:

    To: [email protected]
    From: [email protected]
    Subject: Sent from a terminal!
    
    Your content goes here. Lorem ipsum dolor sit amet, consectetur adipisicing.
    (Notice the blank space between the subject and the body.)
    
  6. Pressione Ctrl+ Dpara enviar.


Você também pode colocar o texto no arquivo e enviá-lo da seguinte maneira:

ssmtp [email protected] < filename.txt
Sid
fonte
29
Parece estranho deixar minha senha de email exposta em algum arquivo do computador. Isso é seguro?
Oadams
2
@oadams não é muito seguro. Use a verificação em duas etapas para reduzir seu risco ou use um gateway de correio que não exija uma senha, como os ISPs.
itsadok
5
Não instale o ssmtp em um servidor com o postfix instalado. O Postfix será removido. Em vez disso, use sendmail [email protected] <file.txt, que funcionará com o postfix ou ssmtp.
Alistair Buxton
2
Outra coisa estranha que eu queria compartilhar aqui é que não funcionou para mim quando tinha uma senha longa / complexa, mas funcionou quando a modifiquei para uma senha simples, estranha, mas verdadeira. Eu também ouvi o mesmo de outra pessoa, mas tentou fazê-lo depois de muita tentativas frustradas para enviar mail e assim que simplificou a senha, para minha surpresa, ele só trabalhou;)
Rajat Gupta
Se o Gmail não permitir que seu servidor acesse, faça login no Gmail no servidor com o navegador da linha de comando. askubuntu.com/questions/460022/using-terminal-as-a-web-browser
Sanghyun Lee
87

Na maioria das vezes, você não precisa configurar um servidor SMTP, basta usar a mailpartir da linha de comando (se ainda não estiver presente, instale com sudo apt-get install mailutils). (Ou se você estiver em um servidor em que o sendmail está configurado, etc.)

marco@dagobah:~$ mail -v [email protected]
Subject: Hello World!
This is an email to myself.

Hope all is well.
.
Cc: 

Você encerra as mensagens com um único .on-line. É quando mailvocê solicita Cc:as informações (ou deixa em branco) e mailimprime informações adicionais sobre o que está tentando fazer, além de detalhar o processamento de conexão, transmissão e recebimento de dados do servidor de correio.

Marco Ceppi
fonte
28
Eu acrescentaria a resposta para incluir "sudo apt-get install mailutils", pois ele não está presente em uma instalação limpa do Ubuntu 10.04. Além disso, encerre a mensagem com a. em uma única linha não funcionou. Eu tive que "Ctrl-D" em vez disso. Por fim, a mensagem não passou!
precisa
7
O @OlivierLalonde sudo apt-get install mailutilsinstalará um servidor SMTP postfixque pode estar um pouco acima do peso para algumas pessoas.
vaab
5
O mailutils também instalará o mysql!
chmike
17
opção -v não em minha instalação do correio 2.99.98, também teve de usar Ctrl + D para terminar
markmnl
2
Atualize esta pergunta, está desatualizada.
22419 phil294
47
apt-get install libio-socket-ssl-perl libnet-ssleay-perl sendemail

uso:

sendemail -f [email protected] -t [email protected] -u subject -m "message" -s smtp.gmail.com:587 -o tls=yes -xu [email protected] -xp gmailpassword 

Se você não quiser especificar sua senha na linha de comando (geralmente não é uma coisa boa a fazer), poderá omitir esse parâmetro e o sendemail solicitará a senha ... e a exibirá na tela, mas pelo menos não estará no seu histórico de linha de comando.

jato
fonte
Enviar e-mails de uma conta do Gmail usando a sendmailmaior segurança possível. Obrigado.
Mark Tomlin
Encontre um patch aqui para não ecoar a senha.
Arun
Eu tive que especificar a porta com -s smtp.gmail.com:587.
Joe Mornin 31/03
5
adicionar um espaço antes de uma linha de comando para não guardá-lo na história da linha de comando
Guhur
outra maneira de não exibi-lo na tela do bash: salve a senha em um arquivo e, em seguida, do arquivo para a variável de ambiente, ex: pass=$(cat my_password); sendemail... -xp $name ...e, claro, se você estiver chamando programaticamente, poderá fazer algo semelhante, ex: ruby system("sendemail ... -xp #{File.read 'my_password'}...")também pode falhar Na primeira vez, você deve enviar um email para essa conta sugerindo que "ative aplicativos menos seguros" para que funcione.
Rogerdpack
23

O mpack é uma excelente maneira de linha de comando para enviar anexos de arquivos.

apt-get install mpack

uso:

mpack -s "file you wanted" ./data.pdf [email protected]
BozoJoe
fonte
20

Você precisa de um MTA para enviar email. Para isso, use o postfix:

sudo apt-get install postfix

Para enviar email:

echo "test message" | mailx -s 'test subject' [email protected]

SOCORRO

One Zero
fonte
Você também precisa instalar o mailutils para mailx, certo?
Nick
4
Eu gostaria que fosse realmente simples assim, mas a menos que você seja alguém muito especial, isso não vai funcionar. 99.9999% dos ISPs ignoram os emails de servidores postfix privados, porque 9.99999 vezes em 10 são spammers.
Cerin
isso não funcionou para mim, é solicitado a instalar mailutilsquando entrei esta no terminal
Mostafiz Rahman
Vá em frente e instale o mailutils. Você não precisa do postRC IIRC.
UAV
@Cerin está certo. Eu precisava de uma funcionalidade de correspondência muito simples para um trabalho cron. Como solução alternativa, se você estiver recebendo por uma conta do Gmail, poderá configurar um filtro para o email (por palavras-chave ou pelo endereço de origem) e o gmail permitirá que ele seja enviado.
Carrie Kendall
15

Instale o pacote sendmaile digite

sendmail -t receiver@example 

escreva seu e-mail e pressione Ctrl + D

MhdSyrwan
fonte
10
mail -s "subjet" -a "attchedfile_name" someone@dest_email.com

ou

cat "afile" | mail -s "subject" someone@dest_email.com
user142345
fonte
apenas para adicionar um teste fácil: eco "Olá, mundo!" | mail -s "Hello" [email protected]
Bohne
2
Se alguém não tem o comando mail, execute: sudo apt-get install mailutilsno Ubuntu / Debian ou yum install mailxno CentOS / Redhat
Giovanni Benussi
9

Você pode enviar um email da linha de comando com o TelNet ou NetCat .

Tudo é explicado aqui .

hanoo@hp_laptop% nc 127.0.0.1 25
220 hp_laptop.localdomain ESMTP Postfix
EHLO man
250 hp_laptop.localdomain
MAIL FROM: <[email protected]>
250 2.1.0 Ok
RCPT TO: <[email protected]>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
This is the body of my mail,
this is the second line...
.
250 2.0.0 Ok: queued as 9C12E7F404
hanoo
fonte
2
É um pouco difícil usar SSL ao usar esse método;)
iX3 30/12/12
1
@ IX3 apenas usar swakse você está bem com SSL / TLS, também ;-)
Germar
Ouopenssl s_client -starttls smtp ...
Raman
7

Se você tentar enviar um email de um sistema, o whitch não executa um servidor de email próprio (ou seja, sistema de desktop), é necessário instalar algo como nullmailer ou esmtp , que encaminham o email local para um email "real" servidor.

Como ferramentas de linha de comando, você pode instalar o mail ou mailx (pacotes mailutils, heirloom-mailx ou bsd-mailx). Se você precisar de anexos, tente biabam.

ddeimeke
fonte
1
Eu gosto bsd-mailx para o comando -E e cronjobs
meffect
6

Eu nunca tentei, mas há um mailcomando que pode enviar email. Veja correio do homem .

Para testar o email local:

echo message | mail username@localhost
dv3500ea
fonte
6
sudo apt-get install sharutils mailutils
uuencode filename filename | mail [email protected]

onde filenameé o mesmo: significa arquivo de entrada e arquivo remoto.

nisse
fonte
sudo apt-get install sharutilsparauuencode
Janus Troelsen
1
O mailutils instala o mysql! oO
chmike
3

Você pode tentar isso:

mail [email protected] -s "Attached file" <<EOF                 
Hi

~| uuencode $HOME/filename.txt filename.txt

EOF

Funciona com o GNU Mailutils , consulte o site para mais informações.

Sharad
fonte
2

Execute :

sudo apt-get install ssmtp
sudo -H gedit /etc/ssmtp/ssmtp.conf

O seguinte precisa ser adicionado lá:

# The user that gets all the mails (UID < 1000, usually the admin)
[email protected]

# The mail server (where the mail is sent to), both port 465 or 587 should be acceptable
# See also https://support.google.com/mail/answer/78799
mailhub=smtp.gmail.com:587

# The address where the mail appears to come from for user authentication.
rewriteDomain=gmail.com

# Use SSL/TLS before starting negotiation
UseTLS=Yes
UseSTARTTLS=Yes

# Username/Password
AuthUser=yourusernameofgmail
AuthPass=yourGmailPassowrd
AuthMethod=LOGIN

# Email 'From header's can override the default domain?
FromLineOverride=yes

Execute :

sudo -H gedit /etc/ssmtp/revaliases

Entre lá:

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

Ative "aplicativos menos seguros" no Gmail:
https://support.google.com/accounts/answer/6010255?hl=pt-BR

Teste-o executando o seguinte no terminal:

echo "Body of mail is abc" | mail -s "Subject is xyz" "[email protected]"`
Aquarius_Girl
fonte
1

Além do acima, eu ainda estava recebendo este erro

echo "Test message from Linux server using ssmtp" | sudo ssmtp -vvv  [email protected]
[<-] 220 smtp.gmail.com ESMTP v193sm19198825qka.18 - gsmtp
[->] EHLO localhost
[<-] 250 SMTPUTF8
[->] STARTTLS
[<-] 220 2.0.0 Ready to start TLS
[->] EHLO localhost
[<-] 250 SMTPUTF8
[->] AUTH LOGIN
[<-] 334 VXNlcm5hbWU6
[->] aG94Z2VuZUBrrrFpbC5jb20=
[<-] 334 UGFzweliecmQ6
[<-] 534 5.7.14  https://support.google.com/mail/answer/78754 v193sm19198825qka.18 - gsmtp
ssmtp: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 v193sm19198825qka.18 - gsmtp)

SOLUÇÃO: redefina a senha do gmail mesmo quando a senha atual estiver correta ... possivelmente precaução de segurança do Google

Scott Stensland
fonte