Como enviar email a partir da linha de comando?


215

Como enviar email a partir da linha de comando?



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á :-)


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:

    root=username@gmail.com
    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 recepient_name@gmail.com
    
  5. Forneça os detalhes da mensagem da seguinte maneira:

    To: recipient_name@gmail.com
    From: username@gmail.com
    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 recipient_name@gmail.com < filename.txt

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 user@example.com <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 marco.ceppi.use@gmail.com
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.


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 fromuser@gmail.com -t touser@domain.com -u subject -m "message" -s smtp.gmail.com:587 -o tls=yes -xu gmailaccount@gmail.com -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.


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 loser@supergoober.cn

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' myemail@mydomain.com

SOCORRO


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


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

ou

cat "afile" | mail -s "subject" someone@dest_email.com

apenas para adicionar um teste fácil: eco "Olá, mundo!" | mail -s "Hello" mail@example.org
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: <netcat@postfix.com>
250 2.1.0 Ok
RCPT TO: <target@host.com>
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

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.


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

6
sudo apt-get install sharutils mailutils
uuencode filename filename | mail user@example.com

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


sudo apt-get install sharutilsparauuencode
Janus Troelsen

1
O mailutils instala o mysql! oO
chmike

3

Você pode tentar isso:

mail name@mailserver.com -s "Attached file" <<EOF                 
Hi

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

EOF

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


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)
root=yourusernameofgmail@gmail.com

# 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:yourusernameofgmail@gmail.com: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" "someusername@gmail.com"`

1

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

echo "Test message from Linux server using ssmtp" | sudo ssmtp -vvv  somebody@mil.gov
[<-] 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

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.