Cómo enviar un correo electrónico con fichero adjunto desde PowerShell. Usaremos un equipo con Windows 10 y como servidor de correo electrónico usaremos GMail.

Requisitos para poder enviar correos electrónicos con adjunto desde línea de comandos PowerShell

El único requisito es disponer de conexión a Internet y de usuario y contraseña de un buzón de correo electrónico, que serán las credenciales de acceso al servidor de mail con el que se envía el correo.

En el caso de correos de GMail puede que tengamos que habilitar la opción «Acceso de aplicaciones poco seguras»:

Requisitos para poder enviar correos electrónicos con adjunto desde línea de comandos PowerShell

Script PowerShell para enviar un correo electrónico con fichero adjunto

A continuación mostramos el contenido del fichero envio_mail.ps1 que envía un correo electrónico, con asunto, cuerpo (en HTML) y fichero adjunto desde una cuenta de GMail a otra cuenta cualquiera. El procedimiento es el mismo si se usan otros clientes de correo electrónico, puede que solo haya que cambiar el servidor SMTP, el método de autenticación y el puerto:

Guardaremos el script anterior en un fichero con el nombre, por ejemplo, envio_mails.ps1. Es importante agregar la extensión ps1 al nombre del fichero, de forma que luego sea reconocido como script PowerShell para su ejecución. También es importante guardar el fichero en codificación UTF8, para que se muestren correctamente las eñes, tildes y demás caracteres:

Script PowerShell para enviar un correo electrónico con fichero adjunto

Ejecución del script PowerShell que envía un email con fichero adjunto

Cambiaremos, como es lógico, los datos de envío del script: el mail del destinatario (al que le llegará el correo), el mail del emisor (el que enviará el correo), el asunto, el cuerpo (en formato HTML), el servidor de SMTP, la ruta y nombre del fichero adjunto, el puerto y la contraseña.

Para ejecutar el script guardado desde PowerShell será suficiente con la siguiente línea:

Se agregará al principio un punto y una contrabarra:

Script PowerShell para enviar un correo electrónico con fichero adjunto

Si todo es correcto nos llegará un correo electrónico con los datos del script, incluido el fichero adjunto:

Script PowerShell para enviar un correo electrónico con fichero adjunto

Si el script está en una unidad y carpeta concretas, deberemos acceder previamente a dicha ubicación, podemos usar:

Donde «D» será la unidad donde está el script y «ProyectoA» será la carpeta de esa unidad donde hemos guardado el script.

Si nos da error en la ejecución del script, puede que se deba a que haya que establecer permisos en PowerShell, para ello ejecutaremos el comando:

Script PowerShell para enviar un correo electrónico con fichero adjunto