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

Software

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.

enviar correo electrónico

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 asegurarnos 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.

Escrito por Roberto Adeva

Fuente > makeuseof

Continúa leyendo
  • arisma

    Información interesante.

    Sólo falta saber si se puede configurar las credenciales de forma segura para que las coja automáticamente en lugar de estar escribiendo cada vez que se vaya a enviar un mensaje.

    • Comentarista

      Me imagino que podrás pegar todas las líneas en un fichero .bat de toda la vida y ejecutarlo cada vez que necesites, modificando obviamente en cada envío lo que haya que modificar.

      • Comentarista

        Vale, me respondo yo mismo, no me había fijado que lo decías por el usuario y la contraseña.