共用方式為


根據事件傳送電子郵件

藉由使用 SMTPEventConsumer 類別,您可以在指定的事件發生時傳送電子郵件給指定的使用者。 這個類別是 WMI 提供的標準事件取用者

SMTPEventConsumer 類別需要下列條件,才能傳送電子郵件訊息以回應事件:

  • SMTPEventConsumer 類別必須編譯成正確的命名空間。 如需詳細資訊,請參閱 使用標準取用者監視和回應事件。
  • SMTP 伺服器必須存在於網路上。
  • 電子郵件訊息不能有附件。
  • 電子郵件訊息必須以US-ASCII編碼。

使用標準取用者的基本程式一律相同,且位於使用標準取用者的監視和回應事件中。 下列程式會將 新增至基本程式;專屬於 SMTPEventConsumer 類別;並描述如何建立傳送電子郵件的事件取用者。

下列程序說明如何建立傳送電子郵件的事件取用者。

建立傳送電子郵件的事件取用者

  1. 視需要安裝並註冊 SMTPEventConsumer 類別。

    SMTPEventConsumer 類別是由 WMI 安裝程式編譯成 root\subscription 命名空間。

  2. 識別您想要監視並建立事件查詢的事件。

    可能有用來監視事件的現有內建事件。 大部分的內部事件都會與 「root\cimv2」 命名空間中的類別實例變更相關聯。 藉由分析 WMI 類別參考中的類別,您可能會找到可識別您要監視之事件的類別。 例如,使用 Win32_LogicalDisk 類別來監視硬碟的變更。

    如果沒有使用的現有內建事件,可能有一個外部事件提供者可以運作。 例如,使用 登錄提供者的 RegistryTreeChangeEvent 類別來監視系統登錄的變更。

    如果類別不存在可識別您想要監視的事件,您必須建立自己的事件提供者,並定義新的外部事件類別。 如需詳細資訊,請參閱 撰寫事件提供者

  3. 在 Managed 物件格式 (MOF) 檔案中,建立 SMTPEventConsumer實例以接收事件。

    使用 實體的屬性,定義事件發生時要傳送的電子郵件訊息。 例如, ToLine 屬性會定義電子郵件位址,而 Message 屬性會定義電子郵件訊息的文字。 您必須定義郵件的電子郵件位址、主旨和文字,但電子郵件訊息不能有附件。 如需詳細資訊,請參閱 設計 Managed 物件格式 (MOF) 類別

  4. 建立事件查詢,指定您想要監視的事件。

    如需詳細資訊,請參閱 使用 WQL 查詢。

  5. 建立__EventFilter實例,並將查詢儲存在Query屬性中

    如需詳細資訊, 請參閱使用 WQL 進行查詢。

  6. 建立 __FilterToConsumerBinding 實例,以關聯篩選條件和取用者。

  7. 使用 Mofcomp.exe 編譯MOF檔案。

範例

本節中的範例位於 MOF 程式代碼中,但您可以使用適用於 WMI 的腳本 API 或 WMICOM API,以程式設計方式建立實例。

下列程式描述如何使用範例。

若要使用範例

  1. 將下列MOF複製到文字檔,並以 .mof 擴展名儲存它。

  2. 在命令提示字元視窗中,使用下列命令編譯MOF檔案:

    Mofcomp filename**.mof**

注意

當MOF程式代碼編譯成root\subscription 命名空間時, SMTPEventConsumer 會編譯成相同的命名空間。

 

#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 ;
};

使用標準取用者監視和回應事件