根據事件傳送電子郵件
藉由使用 SMTPEventConsumer 類別,您可以在指定的事件發生時傳送電子郵件給指定的使用者。 這個類別是 WMI 提供的標準事件取用者 。
SMTPEventConsumer 類別需要下列條件,才能傳送電子郵件訊息以回應事件:
- SMTPEventConsumer 類別必須編譯成正確的命名空間。 如需詳細資訊,請參閱 使用標準取用者監視和回應事件。
- SMTP 伺服器必須存在於網路上。
- 電子郵件訊息不能有附件。
- 電子郵件訊息必須以US-ASCII編碼。
使用標準取用者的基本程式一律相同,且位於使用標準取用者的監視和回應事件中。 下列程式會將 新增至基本程式;專屬於 SMTPEventConsumer 類別;並描述如何建立傳送電子郵件的事件取用者。
下列程序說明如何建立傳送電子郵件的事件取用者。
建立傳送電子郵件的事件取用者
視需要安裝並註冊 SMTPEventConsumer 類別。
SMTPEventConsumer 類別是由 WMI 安裝程式編譯成 root\subscription 命名空間。
識別您想要監視並建立事件查詢的事件。
可能有用來監視事件的現有內建事件。 大部分的內部事件都會與 「root\cimv2」 命名空間中的類別實例變更相關聯。 藉由分析 WMI 類別參考中的類別,您可能會找到可識別您要監視之事件的類別。 例如,使用 Win32_LogicalDisk 類別來監視硬碟的變更。
如果沒有使用的現有內建事件,可能有一個外部事件提供者可以運作。 例如,使用 登錄提供者的 RegistryTreeChangeEvent 類別來監視系統登錄的變更。
如果類別不存在可識別您想要監視的事件,您必須建立自己的事件提供者,並定義新的外部事件類別。 如需詳細資訊,請參閱 撰寫事件提供者。
在 Managed 物件格式 (MOF) 檔案中,建立 SMTPEventConsumer 的實例以接收事件。
使用 實體的屬性,定義事件發生時要傳送的電子郵件訊息。 例如, ToLine 屬性會定義電子郵件位址,而 Message 屬性會定義電子郵件訊息的文字。 您必須定義郵件的電子郵件位址、主旨和文字,但電子郵件訊息不能有附件。 如需詳細資訊,請參閱 設計 Managed 物件格式 (MOF) 類別。
建立事件查詢,指定您想要監視的事件。
如需詳細資訊,請參閱 使用 WQL 查詢。
建立__EventFilter實例,並將查詢儲存在Query屬性中。
如需詳細資訊, 請參閱使用 WQL 進行查詢。
建立 __FilterToConsumerBinding 實例,以關聯篩選條件和取用者。
使用 Mofcomp.exe 編譯MOF檔案。
範例
本節中的範例位於 MOF 程式代碼中,但您可以使用適用於 WMI 的腳本 API 或 WMI 的 COM API,以程式設計方式建立實例。
下列程式描述如何使用範例。
若要使用範例
將下列MOF複製到文字檔,並以 .mof 擴展名儲存它。
在命令提示字元視窗中,使用下列命令編譯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 ;
};
相關主題