¿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.
¿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.
mail -s subject [email protected]
escriba su mensaje, presione Ctrl+D
para finalizar
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
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)
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]
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
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í .
Ya que está basado en Unix, puedes usar el comando sendmail .
Lea otras preguntas en las etiquetas command-line development script email