Compartir a través de


Envío de correo electrónico en función de un evento

Con la clase SMTPEventConsumer, puede enviar un correo electrónico a un usuario designado cuando se produce un evento especificado. Esta clase es un consumidor de eventos estándar que proporciona WMI.

La clase SMTPEventConsumer requiere estas condiciones para enviar un mensaje de correo electrónico en respuesta a un evento:

El procedimiento básico para usar consumidores estándar siempre es el mismo y se encuentra en Supervisión y respuesta a eventos con consumidores estándar. El procedimiento siguiente agrega al procedimiento básico, es específico de la clase SMTPEventConsumer y describe cómo crear un consumidor de eventos que envía un correo electrónico.

En el procedimiento siguiente se describe cómo crear un consumidor de eventos que envíe un correo electrónico.

Procedimientos para crear un consumidor de eventos que envíe correo electrónico

  1. Instale y registre la clase SMTPEventConsumer, si es necesario.

    El programa de instalación de WMI compila la clase SMTPEventConsumer en el espacio de nombres root\subscription.

  2. Identifique el evento que quiere supervisar y cree la consulta de evento.

    Puede haber un evento intrínseco existente que use para supervisar el 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". Mediante el análisis de las clases en la referencia de clases WMI, es probable que encuentre una clase que identifique el evento que quiere supervisar. Por ejemplo, use la clase Win32_LogicalDisk para supervisar los cambios en una unidad de disco duro.

    Si no hay ningún evento intrínseco existente que usar, puede haber un proveedor de eventos extrínseco que pueda funcionar. Por ejemplo, use la clase RegistryTreeChangeEvent del proveedor del registro para supervisar los cambios en el registro del sistema.

    Si no existe una clase que identifique un evento que quiere supervisar, debe crear un proveedor de eventos propio y definir nuevas clases de eventos extrínsecos. Para obtener más información, vea Escritura de un proveedor de eventos.

  3. En el archivo Managed Object Format (MOF), cree una instancia de SMTPEventConsumer para recibir eventos.

    Use las propiedades de la instancia para definir el mensaje de correo electrónico que se va a enviar cuando se produzca un evento. Por ejemplo, la propiedad ToLine define la dirección de correo electrónico y la propiedad Message define el texto del mensaje de 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 datos adjuntos. Para obtener más información, vea Diseño de clases de Managed Object Format (MOF).

  4. Cree una consulta de evento que especifique los eventos que quiere supervisar.

    Para obtener más información, vea Consulta con WQL.

  5. Cree una instancia de __EventFilter y almacene la consulta en la propiedad Query.

    Para obtener más información, vea Consulta con WQL.

  6. Cree una instancia de __FilterToConsumerBinding para asociar el filtro y el consumidor.

  7. Compile el archivo MOF mediante Mofcomp.exe.

Ejemplo

El ejemplo de esta sección está en código MOF, pero puede crear las instancias mediante programación con la API de scripting para WMI o la API COM para WMI.

En este procedimiento se describe cómo usar el ejemplo.

Procedimientos para usar el ejemplo

  1. Copie el código MOF siguiente en un archivo de texto y guárdelo con una extensión .mof.

  2. En una ventana del símbolo del sistema, compile el archivo MOF mediante este comando.

    MofcompNombreDeArchivo**.mof**

Nota

Cuando el código MOF se compila en el espacio de nombres root\subscription, 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 ;
};

Supervisión y respuesta a eventos con consumidores estándar