¿Cómo enviar un correo electrónico desde la Terminal?


169

Sé que hay formas de enviar correos electrónicos desde la terminal en Linux / MacOS, pero parece que no puedo encontrar la documentación adecuada sobre cómo hacerlo.

Básicamente lo necesito para mi script bash que me notifica cada vez que hay un cambio en un archivo.


3
Probablemente debería notarse aquí que algunos hosts e ISP "desactivan" la capacidad de enviar correos electrónicos. Supongo que es un intento de detener a las personas que envían spam y phishing a través de ellos
Jim Jeffries

@JimJeffries ¿Cuáles? Estoy usando un servidor web Amazon EC2.
ckjbgames

Respuestas:


125

Vaya a Terminal y escriba man mailpara obtener ayuda.

Deberá configurar SMTP:

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

Ver también:

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

P.ej:

mail -s "hello" "example@example.com" <<EOF
hello
world
EOF

Esto enviará un correo electrónico a example@example.comcon el asunto helloy el mensaje

Hola

Mundo


Acabo de intentarlo y funcionó para mí, pero tengo dos preguntas por curiosidad. ¿Qué significa <<, en línea? He visto algunos ejemplos con '<' o '<<. ' ¿Para qué se usa esto? ¿Y por qué has dado Fin del archivo allí y al final del mensaje?
Profundo

El "<< EOF" y "EOF" marcan un "documento aquí". El texto entre los dos EOF se trata como una cadena entre comillas multilínea. Se describe en 'man bash'
Joe Inwap

134
echo "this is the body" | mail -s "this is the subject" "to@address"

20
Tenga en cuenta que todas estas soluciones suponen que tiene un MTA instalado localmente
Miquel

11
@Miquel buen punto. En Ubuntu, puede obtener los requisitos previos a través de sudo apt-get install mailutils.
Earldouglas

3
@ James, no es trabajo para mi MAC (((¿Podrías ayudarme?
neo

1
Tutorial paso a paso: rianjs.net/2013/08/…
Dušan Maďar

Extraño. Esto me da un mensaje "SyntaxError: sintaxis no válida" aunque el único cambio que hice fue cambiar la dirección.
Jewenile

41

Si todo lo que necesita es una línea de asunto (como en un mensaje de alerta) simplemente haga:

mailx -s "This is all she wrote" < /dev/null "myself@myaddress"

Es posible que necesite instalar mailutils. Se puede instalar a través de un administrador de paquetes (por ejemplo apt install mailutils)
Jeevan Takhar

31

Probablemente, la forma más sencilla es usar curlesto, no es necesario instalar ningún paquete adicional y se puede configurar directamente en una solicitud.

Aquí hay un ejemplo usando el servidor gmail smtp:

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 es una muy buena opción. Puede generar una contraseña específica de la aplicación para su cuenta de Google y esto solo entrega el correo electrónico desde su propia cuenta. ¡Muy genial!
dakdad

2
Gran respuesta, por último, no olvides activar la aplicación menos segura para hacer el trabajo myaccount.google.com/lesssecureapps
yubaraj poudel

@aliaksandr debería agregar este último punto a su respuesta. Por defecto, esta opción (dar acceso a aplicaciones menos seguras) está deshabilitada y no es evidente. Al menos si está utilizando la cuenta de Gmail como correo electrónico del remitente.
EAmez

18

Si desea adjuntar un archivo en Linux

echo 'mail content' | mailx -s 'email subject' -a attachment.txt username@stackoverflow.com

44
Da un invalid headermensaje para mi archivo adjunto. La opción correcta era mayúscula -A.
Stephane

3
@Stephane Según patrick-haugh, -a es el interruptor de conexión. -A es para el comando de cuenta. Consulte la página de manual
MiaeKim el

10

en el terminal de su Mac OS o Linux OS escriba este código

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

por ejemplo prueba esto

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.