script por para mail linea enviar desde correo con comandos batch email command-line

email - por - enviar un mail desde linux



¿Cómo envío correos electrónicos desde la línea de comandos? (8)

Me gustaría enviar rápidamente un correo electrónico desde la línea de comando. Me doy cuenta de que probablemente hay varias maneras diferentes de hacer esto.

Estoy buscando una manera simple de hacer esto desde un terminal de Linux (probablemente un shell bash pero todo debería funcionar) y una forma alternativa de hacerlo en Windows. Quiero poder actualizar un correo electrónico directamente en la línea de comandos o tener la flexibilidad para canalizar el mensaje en el programa de línea de comando. ¿Cómo harías para hacer esto? Si tienes pequeños scripts también estarían bien.


Aquí hay un ejemplo de Power Shell de una secuencia de comandos para enviar un correo electrónico:

$smtp = new-object Net.Mail.SmtpClient("mail.example.com") if( $Env:SmtpUseCredentials -eq "true" ) { $credentials = new-object Net.NetworkCredential("username","password") $smtp.Credentials = $credentials } $objMailMessage = New-Object System.Net.Mail.MailMessage $objMailMessage.From = "[email protected]" $objMailMessage.To.Add("[email protected]") $objMailMessage.Subject = "eMail subject Notification" $objMailMessage.Body = "Hello world!" $smtp.send($objMailMessage)


IIRC también tendrá que configurar un agente de transferencia de correo (MTA) para usar el mail o la mayoría de las bibliotecas de correo electrónico. Sendmail es el más conocido, pero es un verdadero cerdo en lo que respecta a la configuración. Exim , Qmail y Postfix son todas alternativas populares que son un poco más modernas.

También hay MTA más livianos que solo pueden enviar correo, no recibirlo: nullmailer, mstmp, ssmtp, etc.

Postfix es el predeterminado para Ubuntu. Este artículo de wiki describe cómo configurarlo; ¡asegúrese de permitir solo el reenvío desde su dirección local!


Puedes usar el correo:

$mail -s <subject> <recipients>

A continuación, escriba su mensaje y finalícelo con una línea que solo tiene un punto. Esto indica que ha terminado y envía el mensaje.

También puede canalizar su correo electrónico desde STDIN y se enviará como el texto de un correo electrónico:

$<mail-generating-program> | mail -s <subject> <recipients>

Una pequeña nota con este enfoque: a menos que su computadora esté conectada a Internet y su configuración de DNS esté configurada correctamente, no podrá recibir respuestas a su mensaje. Para un programa de línea de comandos más robusto puede vincular a su cuenta de correo POP o IMAP, eche un vistazo a pine o mutt .



Si está buscando hacer esto desde una línea de comando de Windows, hay una herramienta llamada blat que se puede usar desde un prompt de CMD.

Es un poco más divertido de PowerShell. Dado que PowerShell tiene acceso a .NET Framework, puede usar las clases de System.Net.Mail para enviar correos electrónicos. Hay un script de ejemplo en el Repositorio de secuencias de comandos de PowerShell .


Si está en un servidor Linux, pero el correo no está disponible (que puede ser el caso en los servidores compartidos), puede escribir un script PHP / Perl / Ruby (dependiendo de lo que esté disponible) para hacer lo mismo, por ejemplo, algo Me gusta esto:

#! /usr/bin/php <?php if ($argc < 3) { echo "Usage: " . basename($argv[0]) . " TO SUBJECT [CC]/n"; exit(1); } $message = file_get_contents(''php://stdin'', ''r''); $headers = $argc >= 4 ? "Cc: $argv[3]/r/n" : null; $ret = mail($argv[1], $argv[2], $message, $headers); exit($ret ? 0 : 1);

Luego invoque de la siguiente manera:

mail [email protected] test < message


También puede usar esta versión de sendmail para Windows. Es muy simple de usar, un comportamiento estándar tipo UNIX. Rápido. No necesita ninguna instalación, solo llame al EXE donde se encuentre en su sistema.

Componer el correo electrónico:

echo To: [email protected], [email protected] >> the.mail echo From: [email protected] >> the.mail echo Subject: This is a SENDMAIL notification >> the.mail echo Hello World! >> the.mail echo This is simple enough. >> the.mail echo .>> the.mail

Enviando el archivo:

/usr/lib/sendmail.exe -t < the.mail type the.mail | C:/Projects/Tools/sendmail.exe -t


$ echo "This is the email body" | mail -s "This is the subject" [email protected]

Alternativamente:

$ cat | mail -s "A few lines off the top of my head" [email protected] This is where my multiline message would go ^D

^ D - significa presionar ctrl + d