¿Cómo enviar correo desde la línea de comando?

215

¿Cómo enviar correo desde la línea de comando?

Olivier Lalonde
fuente
1
ubuntuforums.org/showthread.php?t=780509 puede ayudarlo.
Usuario
1
También puedes usar pino.
Kaveh
1
También puede instalar msmtp y seguir las instrucciones descritas en ArchWiki
Thiago Perrotta
2
Es una pena que las respuestas a esto estén tan desactualizadas. Es una pregunta importante que podría usar un buen tutorial
6005

Respuestas:

36

Intente instalar The Mutt E-mail Client . Otra opción es usar emacs con gnus . Otras opciones disponibles también ... En mi humilde opinión, debe utilizar más detalles en sus preguntas, o varias respuestas diferentes a su pregunta que recibirá :-)

crncosta
fuente
2
Aceptó este ya que no requiere ninguna configuración y es bastante fácil de usar.
Olivier Lalonde
21
Espere. mutt - fácil de usar? la frase más loca que he leído hoy :)
Stann
155
  1. Instalar ssmtp Instalar ssmtp :

    sudo apt-get install ssmtp
    
  2. Edite el archivo de configuración ssmtp:

    gksu gedit /etc/ssmtp/ssmtp.conf
    
  3. Agregue el siguiente texto:

    [email protected]
    mailhub=smtp.gmail.com:465
    rewriteDomain=gmail.com
    AuthUser=username
    AuthPass=password
    FromLineOverride=YES
    UseTLS=YES
    
  4. Ejecute ssmtp y proporcione la dirección de correo electrónico del destinatario:

    ssmtp [email protected]
    
  5. Proporcione los detalles del mensaje de la siguiente manera:

    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. Presione Ctrl+ Dpara enviar.


También puede poner el texto en el archivo y enviarlo de la siguiente manera:

ssmtp [email protected] < filename.txt
Sid
fuente
29
Se siente extraño dejar mi contraseña de correo electrónico expuesta en algún archivo de la computadora. ¿Es esto seguro?
oadams el
2
@oadams no es muy seguro. Use la verificación en dos pasos para reducir su riesgo, o use una puerta de enlace de correo que no requiera una contraseña, como la de su ISP.
itsadok
55
No instale ssmtp en un servidor con postfix instalado. Postfix será eliminado. En su lugar, solo use sendmail [email protected] <file.txt que funcionará con postfix o ssmtp.
Alistair Buxton
2
Otra cosa extraña que quería compartir aquí es que no funcionó para mí cuando tenía una contraseña larga / compleja, pero funcionó cuando la modifiqué a una contraseña simple, extraña pero verdadera. También escuché lo mismo de otra persona, pero lo intenté después de muchos intentos fallidos de enviar correos y tan pronto como simplifiqué la contraseña, para mi sorpresa, simplemente funcionó;)
Rajat Gupta
Si Gmail no permite que su servidor acceda, inicie sesión en Gmail en el servidor con el navegador de línea de comandos. askubuntu.com/questions/460022/using-terminal-as-a-web-browser
Sanghyun Lee
87

La mayoría de las veces no debería necesitar configurar un servidor SMTP que simplemente puede usar maildesde la línea de comandos (si aún no está presente, instale con sudo apt-get install mailutils). (O si está en un servidor donde está configurado sendmail, etc.)

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

Hope all is well.
.
Cc: 

Termina los mensajes con un único .en línea. Es entonces cuando maille pedirá que Cc:ingrese la información (o la deje en blanco) y mailluego imprima información adicional sobre lo que está tratando de hacer, además de detallar el procesamiento de la conexión, transmisión y recepción de datos del servidor de correo.

Marco Ceppi
fuente
28
Añadiré la respuesta para incluir "sudo apt-get install mailutils" ya que no está presente en una instalación limpia de Ubuntu 10.04. Además, terminar el mensaje con a. en una sola línea no funcionó. Tuve que "Ctrl-D" en su lugar. Por último, ¡el mensaje no pasó!
Olivier Lalonde
77
@OlivierLalonde sudo apt-get install mailutilsinstalará un servidor SMTP postfixque puede estar un poco sobrecargado para algunas personas.
vaab
55
mailutils también instalará mysql!
chmike
17
-v opción no en mi instalación de correo 2.99.98, también tuve que usar Ctrl + D para finalizar
markmnl
2
Actualice esta pregunta, está desactualizada.
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 

Si no desea especificar su contraseña en la línea de comando (generalmente no es algo bueno), puede omitir ese parámetro y sendemail le pedirá la contraseña ... y la mostrará en la pantalla, pero al menos no estará en tu historial de línea de comando.

chorro
fuente
Enviar correo desde una cuenta de GMail con la sendmailmayor certeza muy útil. Gracias.
Mark Tomlin
Encuentre un parche aquí para no hacer eco de la contraseña.
Arun
Tuve que especificar el puerto con -s smtp.gmail.com:587.
Joe Mornin
55
agregue un espacio antes de una línea de comando para no guardarlo en el historial de la línea de comando
guhur
Otra forma de no mostrarlo en la pantalla bash: guardar la contraseña en un archivo, luego del archivo a la variable de entorno, por ejemplo: pass=$(cat my_password); sendemail... -xp $name ...y, por supuesto, si lo está llamando mediante programación, puede hacer algo similar, por ejemplo: ruby system("sendemail ... -xp #{File.read 'my_password'}...")también puede fallar el la primera vez, debe recibir un correo electrónico en esa cuenta sugiriendo que "habilite aplicaciones menos seguras" para que pueda funcionar.
rogerdpack
23

mpack es una excelente forma de línea de comandos para enviar archivos adjuntos.

apt-get install mpack

uso:

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

Necesita una MTA para enviar correo. Para esto, use postfix:

sudo apt-get install postfix

Para enviar un correo electrónico:

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

AYUDA

Un cero
fuente
También necesita instalar mailutils para mailx, ¿verdad?
Nick
44
Desearía que fuera realmente así de simple, pero a menos que seas alguien muy especial, esto no va a funcionar. El 99.9999% de los ISP ignorarán el correo de servidores privados de postfix, porque 9.99999 de cada 10 veces son spammers.
Cerin
esto no funcionó para mí, pidió instalar mailutilscuando
ingresé
Siga adelante e instale mailutils. No necesita postfix IIRC.
uav
@Cerin tiene razón. Sin embargo, necesitaba una funcionalidad de correo muy simple para un trabajo cron. Como solución alternativa, si recibe a través de una cuenta de gmail, puede configurar un filtro para el correo electrónico (a través de palabras clave o de la dirección de origen) y gmail permitirá que se envíe.
Carrie Kendall
15

Instale el paquete y sendmailluego escriba

sendmail -t receiver@example 

luego escriba su correo electrónico y luego presione Ctrl + D

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

o

cat "afile" | mail -s "subject" someone@dest_email.com
usuario142345
fuente
solo para agregar para una prueba fácil: echo "¡Hola, mundo!" El | mail -s "Hola" [email protected]
Bohne
2
Si alguien no tiene el comando de correo, simplemente ejecute: sudo apt-get install mailutilsen Ubuntu / Debian o yum install mailxen CentOS / Redhat
Giovanni Benussi
9

Puede enviar un correo electrónico desde la línea de comandos con TelNet o NetCat .

Todo se explica aquí .

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
fuente
2
Es un poco difícil usar SSL cuando se usa este método;)
iX3
1
@ iX3 simplemente usa swaksy estás bien con SSL / TLS, también ;-)
Germar
O bienopenssl s_client -starttls smtp ...
Raman el
7

Si intenta enviar un correo electrónico desde un sistema, el cual no ejecuta un servidor de correo electrónico propio (es decir, un sistema de escritorio), debe instalar algo como nullmailer o esmtp , que reenvía su correo local a un correo "real" servidor.

Como herramientas de línea de comandos, puede instalar mail o mailx (paquetes mailutils, heirloom-mailx o bsd-mailx). Si necesita archivos adjuntos, pruebe biabam.

ddeimeke
fuente
1
Me gusta bsd-mailx para el comando -E y cronjobs
meffect
6

Nunca lo he intentado pero hay un mailcomando que puede enviar correo. Ver el correo del hombre .

Para probar el correo electrónico local:

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

donde filenamees lo mismo: significa archivo de entrada y archivo remoto.

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

Puedes probar esto:

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

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

EOF

Funciona con GNU Mailutils , consulte el sitio web para obtener más información.

Sharad
fuente
2

Ejecutar :

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

Lo siguiente debe agregarse allí:

# 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

Ejecutar :

sudo -H gedit /etc/ssmtp/revaliases

Ingrese allí:

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

Habilite "aplicaciones menos seguras" en Gmail:
https://support.google.com/accounts/answer/6010255?hl=en

Pruébelo ejecutando lo siguiente en la terminal:

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

Además de lo anterior, todavía recibía este error

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)

SOLUCIÓN: restablecer la contraseña de gmail incluso cuando la contraseña actual sea correcta ... posiblemente precaución de seguridad de Google

Scott Stensland
fuente