¿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.

NoobDev4iPhone
fuente
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" "[email protected]" <<EOF
hello
world
EOF

Esto enviará un correo electrónico a [email protected]con el asunto helloy el mensaje

Hola

Mundo

gadgetmo
fuente
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"
Earldouglas
fuente
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"
JRFerguson
fuente
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 '[email protected]' \
  --mail-rcpt '[email protected]' \
  --user '[email protected]:YourPassword' \
  -T <(echo -e 'From: [email protected]\nTo: [email protected]\nSubject: Curl Test\n\nHello')
Aliaksandr Sushkevich
fuente
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
MiaeKim
fuente
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>
Pramodya Abeysinghe
fuente