Imprimir

Si has querido realizar una tarea programada con Windows 10 te habrás dado cuenta de que MicroSoft da por obsoletas las opciones de enviar un email o mostrar un mensaje.

accion tarea

Es evidente que lo hacen para potenciar el uso de PowerShell y de este modo incrementar su difusión. Así es que nosotros vamos a hacer un Script de PowerShell para enviar un email desde la consola y luego vamos a crear una tarea programada que lo ejecute.

El Script puede ser por ejemplo así:

$EmailPropio = "Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.";
$EmailDestino = "Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.";
$Asunto = "El asunto del email"
$Mensaje = "El cuerpo del mensaje"
$ServidorSMTP = "smtp.gmail.com"
$ClienteSMTP = New-Object Net.Mail.SmtpClient($ServidorSMTP, 587)
$ClienteSMTP.EnableSsl = $true
$ClienteSMTP.Credentials = New-Object System.Net.NetworkCredential("usuario", "contraseña");
$ClienteSMTP.Send($EmailPropio, $EmailDestino, $Asunto, $Mensaje)

Solo habría que personalizar las diferentes variables con los valores que te correspondan prestando especial atención al "usuario" y "contraseña" (ojo que las credenciales van todas en una sola línea)

Una vez personalizado el Script lo tenemos que guardar en un archivo con extensión .ps1 en una carpeta accesible, con permisos suficientes al menos a nuestro usuario o al que vaya ejecutar la tarea.

Luego desde el programador de tareas seleccionamos como acción a realizar "Iniciar un programa" y en el siguiente paso escribimos lo siguiente:

powershell -file "C:\rutadelscript\nombredelscript.ps1"

script tarea

  Y al darle a siguiente luego pulsamos Sí:

script tarea2Con esto ya tendremos la tarea que envía emails. Asóciala a un evento, a un horario, a un inicio de sesión... a lo que necesites y desde ese momento tu ordenador te avisará por email de lo que suceda.

NOTA: Para asegurarnos que GMAIL envía los mensajes correctamente tenemos que habilitar el uso de "aplicaciones menos seguras" en la configuración de la cuenta de Google. Ayuda de Google.

 

Para Windows 2008

Para que se ejecuten los scripts de PowerShell en Windows 2008 hay que activarlos con el siguiente comando escrito en la consola de PowerShell: Set-ExecutionPolicy Unrestricted

Para ejecutar los scripts en PowerShell con una tarea programada hay que hacerlo sin el parámetro -file que se usa para Windows 10, de modo que quedaría así: powershell "rutadelscript\script.ps1"

 

Adjuntar un archivo al email

Si lo que queremos es enviar un email y adjuntar un archivo al mismo tiempo, el código fuente anterior hay que modificarlo un poco y dejarlo así:

$EmailPropio = "Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.";
$EmailDestino = "Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.";
$Asunto = "El asunto del email"
$Texto = "El cuerpo del mensaje"
$ServidorSMTP = "smtp.gmail.com"
$Archivo = "c:\carpeta\archivo.txt"
$Mensaje = New-Object System.Net.Mail.MailMessage
$Mensaje.From = $EmailPropio
$Mensaje.To.Add($EmailDestino)
$Mensaje.IsBodyHtml = $True
$Mensaje.Subject = $Asunto
$Mensaje.Body = $Texto
$Adjunto = New-Object Net.Mail.Attachment($Archivo)
$Mensaje.Attachments.Add($Adjunto)
$ClienteSMTP = New-Object Net.Mail.SmtpClient($ServidorSMTP, 587)
$ClienteSMTP.EnableSsl = $true
$ClienteSMTP.Credentials = New-Object System.Net.NetworkCredential("usuario", "contraseña");
$ClienteSMTP.Send($Mensaje)

No olvidar que hay que modificar los valores entre comillas por los correspondientes a cada caso particular.