Enviar un correo electrónico basado en un evento
Utilizando la SMTPEventConsumer clase puede enviar un correo electrónico a un usuario designado cuando se produzca un evento especificado. Esta clase es un consumidor de eventos estándar que proporciona WMI. que proporciona WMI.
La SMTPEventConsumer clase requiere las siguientes condiciones para enviar un correo electrónico en respuesta a un evento:
- La SMTPEventConsumer clase debe ser compilada en el espacio del nombre correcto. Para más información, véase Supervisión y respuesta a eventos con consumidores estándar
- Un servidor SMTP debe existir en la red.
- El mensaje de correo electrónico no puede tener un adjunto.
- El mensaje del correo electrónico debe codificarse en US-ASCII.
El procedimiento básico para utilizar consumidores estándar es siempre el mismo, y se encuentra en Supervisión y respuesta a eventos con consumidores estándar. El siguiente procedimiento que se añade al procedimiento básico, es específico del SMTPEventConsumer clase y describe cómo crear un consumidor de eventos que envía un correo electrónico.
El siguiente procedimiento describe cómo crear un consumidor que envía un correo electrónico.
Para crear un consumidor que envía un correo electrónico
Instale y registre la SMTPEventConsumer clase si es necesario.
La SMTPEventConsumer clase está compilada en el espacio del nombre root\subscription por el programa de instalación VMI.
Identifique el evento que desea supervisar y cree la consulta de eventos.
Puede que ya exista un evento intrínseco que sirva para monitorizar tu evento. La mayoría de los eventos intrínsecos están asociados a cambios en las instancias de clase del espacio de nombres "root\cimv2". Analizando las clases en las Clases WMI preferencia probablemente pueda encontrar una clase que identifique el evento que desea supervisar. Por ejemplo, use el Win32_LogicalDisk clase para monitorizar los cambios a un disco duro drive.
Si no hay eventos intrínsecos existentes que utilizan, puede haber un proveedor de eventos extrínsecos que puede trabajar. Por ejemplo, use el RegistryTreeChangeEvent clase del proveedor Registry para supervisar los cambios en el registro del sistema.
Si no existe una clase que identifique el evento que desea supervisar, deberá crear su propio proveedor de eventos y definir nuevas clases de eventos extrínsecos. Para más información, véase Escribiendo un proporcionador de eventos.
En el archivo Managed Object Format (MOF), cree una instancia del archivo SMTPEventConsumer para recibir eventos.
Utilice las propiedades de la instancia para definir el mensaje de correo electrónico que se enviará cuando se produzca un evento. Por ejemplo, la ToLine propiedad define la dirección de correo electrónico y el mensaje propiedad define el texto del mensaje del correo electrónico. Debe definir la dirección de correo electrónico, el asunto y el texto de un mensaje, pero un mensaje de correo electrónico no puede tener un archivo adjunto. Para obtener más información, vea Diseño de clases de formato de Managed Object Format (MOF).
Cree una consulta de eventos que especifique los eventos que desea supervisar.
Para más información, véase Consulta con WQL.
Crear uns instancia de __EventFilter y almacene su consulta en la Consulta propiedad.
Para más información, véase, Consulta con WQL.
Crear una instancia de __FilterToConsumerBinding para asociar el filtro y el consumidor.
Compile el archivo MOF utilizando Mofcomp.exe.
Ejemplo
El ejemplo de esta sección está en código MOF, pero puede crear las instancias mediante programación utilizando la función Scripting API para WMI o el COM API para WMI.
El siguiente procedimiento describe cómo usar el ejemplo.
Para usar el ejemplo
Copie el siguiente MOF a un archivo de texto y guárdelo con extensión .mof.
En una ventana de línea de comandos, compile el archivo MOF utilizando el siguiente comando:
Mofcomp nombre de archivo**.mof**
Nota:
Cuando el código MOF se compila en el espacio de nombres root\subscription, el espacio de nombres SMTPEventConsumer se compila en el mismo espacio de nombres.
#pragma namespace ("\\\\.\\root\\subscription")
instance of __EventFilter as $FILTER
{
Name = "LowDiskspaceFilter";
EventNamespace = "\\\\.\\root\\cimv2";
Query = "SELECT * FROM __InstanceModificationEvent WITHIN 10 "
"WHERE TargetInstance ISA \"Win32_LogicalDisk\" "
"AND TargetInstance.FreeSpace < 846000000 "
"AND PreviousInstance.FreeSpace >= 846000000 "
"AND (TargetInstance.DeviceID = \"C:\" "
"OR TargetInstance.DeviceID = \"D:\")";
QueryLanguage = "WQL";
};
instance of SMTPEventConsumer as $CONSUMER
{
Name = "LowDisk";
ToLine = "SysAd@MyCompany.com, MyAlias@MyCompany.com";
CcLine = "MyHome@MyISP.com";
ReplyToLine = "MyAlias@MyCompany.com";
SMTPServer = "SmartHost";
Subject = "WARNING: Low disk space";
Message = "WARNING: Your %TargetInstance.DeviceID% is"
" getting dangerously low.";
};
instance of __FilterToConsumerBinding
{
Consumer = $CONSUMER ;
Filter = $FILTER ;
};
Temas relacionados