Wysyłanie wiadomości e-mail na podstawie zdarzenia
Korzystając z klasy SMTPEventConsumer, możesz wysłać wiadomość e-mail do wyznaczonego użytkownika po wystąpieniu określonego zdarzenia. Ta klasa jest standardowym odbiorcą zdarzeń , który jest zapewniany przez WMI.
Klasa SMTPEventConsumer wymaga następujących warunków wysyłania wiadomości e-mail w odpowiedzi na zdarzenie:
- Klasa SMTPEventConsumer musi zostać skompilowana w prawidłowej przestrzeni nazw. Aby uzyskać więcej informacji, zapoznaj się z Monitorowanie i reagowanie na zdarzenia za pomocą standardowych odbiorników.
- Serwer SMTP musi istnieć w sieci.
- Wiadomość e-mail nie może mieć załącznika.
- Wiadomość e-mail musi być zakodowana w języku US-ASCII.
Podstawowa procedura używania standardowych odbiorców jest zawsze taka sama i znajduje się w monitorowanie i reagowanie na zdarzenia za pomocą standardowych odbiorców. Poniższa procedura jest uzupełnieniem procedury podstawowej; jest specyficzna dla klasy SMTPEventConsumer; i opisuje, jak utworzyć konsumenta zdarzeń, który wysyła wiadomość e-mail.
Poniższa procedura opisuje sposób tworzenia odbiorcy zdarzeń, który wysyła wiadomość e-mail.
Aby utworzyć odbiorcę zdarzeń wysyłającego wiadomość e-mail
W razie potrzeby zainstaluj i zarejestruj klasę SMTPEventConsumer.
Klasa SMTPEventConsumer jest kompilowana w przestrzeni nazw root\subscription przez program instalacyjny WMI.
Zidentyfikuj zdarzenie, które chcesz monitorować, i utwórz zapytanie o zdarzenie.
Może istnieć istniejące zdarzenie wewnętrzne, które służy do monitorowania zdarzenia. Większość zdarzeń zasadniczych jest skojarzona ze zmianami instancji klas w przestrzeni nazw "root\cimv2". Analizując klasy w odniesieniu do klas WMI, można prawdopodobnie znaleźć klasę identyfikującą zdarzenie, które chcesz monitorować. Na przykład użyj klasy Win32_LogicalDisk, aby monitorować zmiany na dysku twardym.
Jeśli nie ma istniejących zdarzeń wewnętrznych, które używają, może istnieć zewnętrzny dostawca zdarzeń, który może działać. Na przykład użyj klasy RegistryTreeChangeEvent dostawcy rejestru, aby monitorować zmiany w rejestrze systemowym.
Jeśli klasa nie istnieje, która identyfikuje zdarzenie, które chcesz monitorować, musisz utworzyć własnego dostawcę zdarzeń i zdefiniować nowe klasy zdarzeń extrinsic. Aby uzyskać więcej informacji, zobacz Tworzenie dostawcy zdarzeń.
W pliku Zarządzany Format Obiektu (MOF) utwórz wystąpienie SMTPEventConsumer, aby odbierać zdarzenia.
Użyj właściwości wystąpienia, aby zdefiniować wiadomość e-mail do wysłania po wystąpieniu zdarzenia. Na przykład właściwość ToLine definiuje adres e-mail, a właściwość Message definiuje tekst wiadomości e-mail. Musisz zdefiniować adres e-mail, temat i tekst wiadomości, ale wiadomość e-mail nie może mieć załącznika. Aby uzyskać więcej informacji, zobacz Projektowanie klas formatu obiektów zarządzanych (MOF).
Utwórz zapytanie o zdarzenie określające zdarzenia, które chcesz monitorować.
Aby uzyskać więcej informacji, zobacz Querying with WQL.
Utwórz wystąpienie __EventFilter i umieść swoje zapytanie we właściwości Query.
Aby uzyskać więcej informacji, zobacz Querying with WQL.
Skojarz filtr i odbiorcę, tworząc wystąpienie __FilterToConsumerBinding.
Skompiluj plik MOF przy użyciu Mofcomp.exe.
Przykład
Przykład w tej sekcji znajduje się w kodzie MOF, ale wystąpienia można utworzyć programowo przy użyciu interfejsu API Scripting dla WMI lub interfejsu API COM dla WMI.
W poniższej procedurze opisano sposób użycia przykładu.
Aby użyć przykładu
Skopiuj następujący plik MOF do pliku tekstowego i zapisz go przy użyciu rozszerzenia mof.
W oknie wiersza polecenia skompiluj plik MOF przy użyciu następującego polecenia:
mofcomp nazwa pliku**.mof**
Nota
Gdy kod MOF jest kompilowany w przestrzeni nazw root\subscription, SMTPEventConsumer jest kompilowany w tej samej przestrzeni nazw.
#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 ;
};
Tematy pokrewne