Aracılığıyla paylaş


Bir Olaya Dayalı E-posta Gönderme

SMTPEventConsumer sınıfını kullanarak, belirtilen bir olay gerçekleştiğinde belirlenen kullanıcıya e-posta gönderebilirsiniz. Bu sınıf, WMI'nin sağladığı standardında bir olay tüketicisi'dir.

SMTPEventConsumer sınıfı, bir olaya yanıt olarak e-posta iletisi göndermek için aşağıdaki koşulları gerektirir:

Standart tüketicileri kullanmaya yönelik temel yordam her zaman aynıdır ve İzleme ve Standart Tüketicilerle Olaylara Yanıt Vermeiçinde bulunur. Aşağıdaki yordam temel yordamı ekler; SMTPEventConsumer sınıfına özgüdür; ve e-posta gönderen bir olay tüketicisi oluşturmayı açıklar.

Aşağıdaki yordamda, e-posta gönderen bir olay tüketicisinin nasıl oluşturulacağı açıklanır.

E-posta gönderen bir olay tüketicisi oluşturmak için

  1. Gerekirse SMTPEventConsumer sınıfını yükleyin ve kaydedin.

    SMTPEventConsumer sınıfı WMI kurulum programı tarafından kök\abonelik ad alanında derlenmiş.

  2. İzlemek istediğiniz olayı belirleyin ve olay sorgusunu oluşturun.

    Olayınızı izlemek için kullanılan mevcut bir iç olay olabilir. Çoğu iç olay, "root\cimv2" ad alanında sınıf örneklerinde yapılan değişikliklerle ilişkilendirilir. WMI Sınıfları başvurusundaki sınıfları analiz ederek, izlemek istediğiniz olayı tanımlayan bir sınıf bulabilirsiniz. Örneğin, sabit disk sürücüsündeki değişiklikleri izlemek için Win32_LogicalDisk sınıfını kullanın.

    Kullanan bir iç olay yoksa, çalışabilecek bir dış olay sağlayıcısı olabilir. Örneğin, sistem kayıt defterindeki değişiklikleri izlemek için Kayıt Defteri sağlayıcısının RegistryTreeChangeEvent sınıfını kullanın.

    İzlemek istediğiniz olayı tanımlayan bir sınıf yoksa, kendi olay sağlayıcınızı oluşturmanız ve yeni dış olay sınıfları tanımlamanız gerekir. Daha fazla bilgi için bkz. Olay Sağlayıcısı Yazma.

  3. Yönetilen Nesne Biçimi (MOF) dosyasında, olayları almak için SMTPEventConsumer bir örneği oluşturun.

    Bir olay gerçekleştiğinde gönderilecek e-posta iletisini tanımlamak için örneğin özelliklerini kullanın. Örneğin, ToLine özelliği e-posta adresini, İleti özelliği de e-posta iletisinin metnini tanımlar. İletinin e-posta adresini, konusunu ve metnini tanımlamanız gerekir, ancak e-posta iletisinin eki olamaz. Daha fazla bilgi için bkz. Yönetilen Nesne Biçimi (MOF) Sınıfları Tasarlama.

  4. İzlemek istediğiniz olayları belirten bir olay sorgusu oluşturun.

    Daha fazla bilgi için bkz. WQL ile Sorgulama.

  5. bir __EventFilter örneği oluşturun ve sorgunuzu Sorgu özelliğinde depolayın.

    Daha fazla bilgi için bkz. WQL ile sorgulama yapma.

  6. Filtreyi ve tüketiciyi ilişkilendirmek için bir __FilterToConsumerBinding örneği oluşturun.

  7. Mofcomp.exekullanarak MOF dosyasını derleyin.

Örnek

Bu bölümdeki örnek MOF kodundadır, ancak WMI için Betik OLUŞTURMA API'sini veya WMI içinCOM API'sini kullanarak örnekleri program aracılığıyla oluşturabilirsiniz.

Aşağıdaki yordamda, örneğin nasıl kullanılacağı açıklanmaktadır.

Örnek kullanmak için

  1. Aşağıdaki MOF dosyasını bir metin dosyasına kopyalayın ve .mof uzantısıyla kaydedin.

  2. Komut istemi penceresinde aşağıdaki komutu kullanarak MOF dosyasını derleyin:

    Mofcompdosya adı**.mof**

Not

MOF kodu root\subscription ad alanında derlendiğinde, SMTPEventConsumer da aynı ad alanında derlenir.

 

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

Standart Tüketicilerle Olayları İzleme ve Cevaplama