viernes, 26 de enero de 2018

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


El correo electrónico se ha convertido en una herramienta imprescidible para casi todo el mundo. Hoy en día podemos elegir entre varios servicios de correo electrónico que podemos utilizar de forma totalmente gratuita. Servicios online que podemos utilizar siempre y cuando tengamos conexión a Internet, desde el ordenador, el móvil o cualquier dispositivo con Internet y un navegador web. Pero si en algún momento no podemos hacer uso de un navegador, ya sea porque estamos en un PC que no es el nuestro, no queremos que guarde nuestra contraseña o datos de acceso o simplemente sospechamos que el navegador puede estar infectado por un malware, vamos a mostrar cómo enviar un correo electrónico desde la línea de comandos de Windows.

Para ello, vamos a usar una herramienta propia del sistema operativo de Microsoft, Windows PowerShell. Una utilidad basada en línea de comandos y desde la que podemos enviar un mensaje de correo sin necesidad de entrar en nuestro servicio de correo electrónico y por lo tanto, sin necesida de tener que usar ningún navegador.

Pasos a seguir para enviar un correo electrónico desde la línea de comandos de PowerShell


Por lo tanto, lo primero que tenemos que hacer es abrir la herramienta Windows PowerShell, algo que podemos hacer escribiendo su nombre en la caja de texto de la barra de tareas o bien desde el menú Inicio de Windows 10. Una vez estemos frente a la línea de comandos de PowerShell, antes de ejecutar nada, lo que tenemos que hacer es preprar los comandos que vamos a lanzar. A continuación dejamos una plantilla para que cada uno la configure con su dirección de correo, la de los destinatarios, su servicio de correo electrónico, etc.

$From = “tudirecciondecorreo@gmail.com”

$To = “direcciondedestino@dominio.com”

$Cc = “direccionconcopia@dominio.com”

$Attachment = “C:\users\Username\Documents\nombrearchivo.extension”

$Subject = “Asunto del mensaje”

$Body = “Texto del mensaje”

$SMTPServer = “smtp.gmail.com”

$SMTPPort = “587”

Send-MailMessage -From $From -to $To -Cc $Cc -Subject $Subject -Body $Body -SmtpServer 

$SMTPServer -port $SMTPPort -UseSsl -Credential (Get-Credential) -Attachments $Attachment –DeliveryNotificationOption OnSuccess

Las líneas que comienzan con el símbolo del dólar son la declaración de variables, puede que no necesitemos todas, como la de CC o Attachment, mientras que es el comando Send-MailMessage el que se encarga de enviar nuestro mensaje de correo desde la línea de comandos.


Todas las variables las tenemos que personalizar según nuestro mensaje de correo y el servicio que utilicemos. En el ejemplo se está utilizando el servicio de Gmail, pero la variable SMTPServer deberá llevar el servicio que usemos para nuestro correo. Podemos buscar esa información si no la sabemos, pero por ejemplo, si usamos Yahoo será smtp.mail.yahoo.com por el puerto 465, mientras que si usamos Outlook entonces sería smtp-mail.outlook.com por el puerto 587.

Los parámetros -UseSsl-DeliveryNotificationOption OnSuccess son opcionales, pero nos permiten determinar que la dirección de correo sea segura y si queremos recibir confirmación de que el mensaje de correo se ha enviado correctamente.

En cuanto tengamos todas las variables y el comando debidamente configurado, podemos pegarlo en la línea de comandos de PowerShell y ejecutarlo. Nada más pulsar Enter, se nos solicitará el nombre de usuario y contraseña para que el envío se pueda realizar correctamente.