¿Cómo enviar un correo electrónico desde la línea de comandos?

26

¿Cómo enviar un correo electrónico desde la línea de comandos o el script? Quiero poder ejecutar el script mediante programación pasando el receptor y el mensaje.

    
pregunta michelemarcon 19.04.2011 - 11:57

7 respuestas

20

mail -s subject [email protected] escriba su mensaje, presione Ctrl+D para finalizar

    
respondido por el vartec 19.04.2011 - 12:31
24

Hay dos programas que conozco que te permitirán configurar fácilmente tu Mac para enviar correos electrónicos desde la línea de comandos.

He escrito CÓMO para ambos:

De los dos, sugiero msmtp .

La configuración es lo suficientemente complicada como para no estar seguro de si debo replicar todos los pasos aquí, pero lo mencionaré si usa Homebrew puedes instalar msmtp usando

brew install msmtp --with-macosx-keyring

Luego, el resto es solo una cuestión de configurar los archivos de configuración relacionados

El primero es /usr/local/etc/msmtprc

# Begin msmtprc
# Set default values for all following accounts.
defaults
tls on
logfile ~/.msmtp.log

# A first gmail address
account [email protected]
host smtp.gmail.com
port 587
protocol smtp
auth on
from [email protected]
user [email protected]
tls on
tls_starttls on

# this next line is crucial: you have to point to the correct security certificate for GMail.
# If this doesn't work, check the mstmp documentation
# at http://msmtp.sourceforge.net/documentation.html for help
#
# This next line should all be on one long line:
tls_trust_file /path/to/Thawte Roots/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem

# Set a default account
# You need to set a default account for Mail
account default : [email protected]

# end msmtprc

Tenga en cuenta que la línea tls_trust_file debe apuntar a donde haya descargado e instalado los certificados desde enlace .

Puse el mío en ~/Dropbox/Thawte Roots para poder tenerlo en todas mis Mac.

Luego necesitas un archivo ~/.mailrc para decir dónde se encuentra el binario msmtp. Si usa brew será /usr/local/bin/msmtp para que el archivo se vea así:

set sendmail="/usr/local/bin/msmtp"

El último pero crucial paso es asegurarse de que su Llavero tenga la información exactamente en el formato que msmtp la esperará:

Creoqueesocubrelamayoríadelosdetalles.Consulte enlace si desea Algunos detalles más.

    
respondido por el TJ Luoma 12.02.2012 - 21:15
12

Esto funcionó para mí, fue escrito pensando en Lion pero funciona para Mountain Lion. Por cierto, esto está usando Gmail, así que si no lo estás ...

¡No necesitas descargar nada! (solo configura una cuenta de gmail)

enlace

Configure el archivo de edición de Postfix para Gmail SMTP /etc/postfix/main.cf

sudo vim /etc/postfix/main.cf

y agregue lo siguiente debajo de los hosts de transmisión comentados: -

relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes

Genera sasl_password si aún no existe

sudo vim /etc/postfix/sasl_passwd

y escriba lo siguiente: -

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

Ejecuta los siguientes comandos

sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd
sudo launchctl stop org.postfix.master
sudo launchctl start org.postfix.master

Y ya terminaste ...

Ahora, debería poder enviar correos electrónicos desde la línea de comandos, por ejemplo. para enviar el contenido de un directorio como un árbol a una dirección de correo electrónico

tree /var/www/somefolder | mail -s "contents" [email protected]
    
respondido por el Jonny 24.05.2013 - 06:40
10

La forma más básica de enviar correo es a través de una sesión de telnet con el servidor smtp de su proveedor / red. Después de contactar con el servidor y después de cada comando, el servidor responderá si acepta el comando con algo como "250 OK", o si no con un mensaje de error.

Todos los detalles se pueden encontrar en RFC2821 - Protocolo simple de transferencia de correo, Google para ello. Esta forma básica es excelente para probar por qué algo falla en el envío de correo, pero creo que es bastante complicado escribirlo a prueba.

Primero, obtenga una interfaz de línea de comandos en su computadora, iniciando Terminal. Luego continúe con los siguientes comandos, uno tras otro.

Abra una sesión de telnet en el puerto 25 del servidor smtp de su proveedor / red

telnet name_or_ip_of_smtp_server 25

diga hola más el nombre de Internet de su proveedor / red, como abc.com

EHLO name_of_your_network

se necesita una dirección de = from =, el < y > son parte del comando

MAIL FROM:<your_email_adress>

indique uno o más destinos, el < y > son parte del comando

RCPT TO:<destination_email_address>
RCPT TO:<second_destination_email_address>
RCPT TO:<etc_destination_email_address>

diga al servidor que desea que comience a enviar datos

DATA

ahora el servidor debería responder, puede comenzar a enviar su correo y entrar en modo de datos

your data
more data
etc

ahora termine los datos con un punto como solo char en una línea

.

el servidor vuelve al modo comando para que pueda salir

QUIT
    
respondido por el Henry vM 12.02.2012 - 23:10
0

mtcmail es otra opción: enlace .

[Ignora este texto adicional. Añadido porque: el cuerpo debe tener al menos 30 caracteres; ingresaste 27.]

    
respondido por el Sojourner 11.11.2012 - 00:34
0

Es posible que desee revisar postfixconf que habilita y configura OS X para enviar correos electrónicos desde la línea de comandos (usando su entrada) .

Se basa en la configuración de postfix que está bien documentada en la web here , aquí y aquí .

    
respondido por el rouble 29.07.2016 - 22:24
-3

Ya que está basado en Unix, puedes usar el comando sendmail .

    
respondido por el Pierre Watelet 19.04.2011 - 12:13

Lea otras preguntas en las etiquetas