¿Cómo enviar un correo electrónico desde la línea de comandos o 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 script? Quiero poder ejecutar el script mediante programación pasando el receptor y el mensaje.
Respuestas:
mail -s subject someone@example.com
escribe tu mensaje, presiona Ctrl+D
para terminar
echo This will be the body of the email | mail -s "This is the Subject" destination@example.com
Conozco dos programas que le permitirán configurar fácilmente su Mac para enviar correos electrónicos desde la línea de comandos.
He escrito COMO para los dos:
De los dos, sugiero msmtp
.
La configuración es lo suficientemente complicada que no estoy seguro de si debería replicar todos los pasos aquí, pero mencionaré que si usa Homebrew , puede 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 example@gmail.com
host smtp.gmail.com
port 587
protocol smtp
auth on
from example@gmail.com
user example@gmail.com
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 : example@gmail.com
# end msmtprc
Tenga en cuenta que la tls_trust_file
línea debe apuntar a donde haya descargado e instalado los certificados de https://www.thawte.com/roots/index.html .
Puse el mío ~/Dropbox/Thawte Roots
para poder tenerlo en todos mis Mac.
Luego necesita un ~/.mailrc
archivo para decir dónde se encuentra el binario msmtp. Si lo usa brew
, /usr/local/bin/msmtp
el archivo se verá 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 esperará:
Creo que eso cubre la mayoría de los detalles. Consulte http://www.tuaw.com/2010/05/04/msmtp-a-free-tool-to-send-email-from-terminal/ si desea obtener más detalles.
example@gmail.com
a su dirección de correo electrónico de Gmail o Google Apps.
~/.msmtprc
La forma más básica de enviar correo es a través de una sesión telnet con el servidor smtp de su proveedor / red. Después de contactar al 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 sale mal al enviar correo, pero creo que es bastante complicado escribir una prueba completa.
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 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 from = return, las <y> son parte del comando
MAIL FROM:<your_email_adress>
dar uno o más destinos, los <y> son parte del comando
RCPT TO:<destination_email_address>
RCPT TO:<second_destination_email_address>
RCPT TO:<etc_destination_email_address>
dígale al servidor que desea comenzar a enviar datos
DATA
ahora el servidor debería responder, puede comenzar a enviar su correo y pasar al 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 de comando para que pueda salir
QUIT
Esto funcionó para mí, fue escrito con Lion en mente pero funciona para Mountain Lion. Por cierto, esto está usando Gmail, así que si no estás ...
¡No necesitas descargar nada! (solo configura una cuenta de gmail)
http://www.anujgakhar.com/2011/12/09/using-macosx-lion-command-line-mail-with-gmail-as-smtp/
Configurar Postfix para el archivo de edición SMTP de Gmail /etc/postfix/main.cf
sudo vim /etc/postfix/main.cf
y agregue lo siguiente debajo de los host de retransmisió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
smtp_sasl_mechanism_filter = plain
Genere sasl_password si aún no existe
sudo vim /etc/postfix/sasl_passwd
e ingrese lo siguiente: -
[smtp.gmail.com]:587 username@gmail.com:password
Ejecute 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" your@yourdomain.com
mtcmail es otra opción: http://www.macupdate.com/app/mac/33505/mtcmail-cli .
[Ignore este texto adicional. Agregado porque: el cuerpo debe tener al menos 30 caracteres; ingresaste 27.]
Como está basado en Unix, puede usar el comando sendmail .