Mengirim Email Berdasarkan Peristiwa
Dengan menggunakan kelas SMTPEventConsumer , Anda dapat mengirim email ke pengguna yang ditunjuk saat peristiwa tertentu terjadi. Kelas ini adalah konsumen peristiwa standar yang disediakan WMI.
Kelas SMTPEventConsumer memerlukan kondisi berikut untuk mengirim pesan email sebagai respons terhadap peristiwa:
- Kelas SMTPEventConsumer harus dikompilasi ke dalam namespace yang benar. Untuk informasi selengkapnya, lihat Memantau dan Merespons Peristiwa dengan Konsumen Standar.
- Server SMTP harus ada di jaringan.
- Pesan email tidak dapat memiliki lampiran.
- Pesan email harus dikodekan di US-ASCII.
Prosedur dasar untuk menggunakan konsumen standar selalu sama, dan terletak di Pemantauan dan Merespons Peristiwa dengan Konsumen Standar. Prosedur berikut menambahkan ke prosedur dasar; khusus untuk kelas SMTPEventConsumer ; dan menjelaskan cara membuat konsumen peristiwa yang mengirim email.
Prosedur berikut menjelaskan cara membuat konsumen peristiwa yang mengirim email.
Untuk membuat konsumen peristiwa yang mengirim email
Instal dan daftarkan kelas SMTPEventConsumer , jika perlu.
Kelas SMTPEventConsumer dikompilasi ke dalam namespace layanan root\subscription oleh program penyiapan WMI.
Identifikasi peristiwa yang ingin Anda pantau dan buat kueri peristiwa.
Mungkin ada peristiwa intrinsik yang ada yang digunakan untuk memantau peristiwa Anda. Sebagian besar peristiwa intrinsik dikaitkan dengan perubahan pada instans kelas di namespace "root\cimv2". Dengan menganalisis kelas dalam referensi Kelas WMI, Anda mungkin dapat menemukan kelas yang mengidentifikasi peristiwa yang ingin Anda pantau. Misalnya, gunakan kelas Win32_LogicalDisk untuk memantau perubahan pada hard disk drive.
Jika tidak ada peristiwa intrinsik yang ada yang menggunakan, mungkin ada penyedia peristiwa ekstrinsik yang dapat berfungsi. Misalnya, gunakan kelas RegistryTreeChangeEvent dari penyedia Registri untuk memantau perubahan pada registri sistem.
Jika kelas tidak ada yang mengidentifikasi peristiwa yang ingin Anda pantau, Anda harus membuat penyedia peristiwa Anda sendiri dan menentukan kelas peristiwa ekstrinsik baru. Untuk informasi selengkapnya, lihat Menulis Penyedia Acara.
Dalam file Managed Object Format (MOF), buat instans SMTPEventConsumer untuk menerima peristiwa.
Gunakan properti instans untuk menentukan pesan email yang akan dikirim saat peristiwa terjadi. Misalnya, properti ToLine menentukan alamat email, dan properti Pesan menentukan teks pesan email. Anda harus menentukan alamat email, subjek, dan teks pesan, tetapi pesan email tidak dapat memiliki lampiran. Untuk informasi selengkapnya, lihat Mendesain Kelas Format Objek Terkelola (MOF).
Buat kueri peristiwa yang menentukan peristiwa yang ingin Anda pantau.
Untuk informasi selengkapnya, lihat Mengkueri dengan WQL.
Buat instans __EventFilter dan simpan kueri Anda di properti Kueri .
Untuk informasi selengkapnya lihat, Mengkueri dengan WQL.
Buat instans __FilterToConsumerBinding untuk mengaitkan filter dan konsumen.
Kompilasi file MOF dengan menggunakan Mofcomp.exe.
Contoh
Contoh di bagian ini ada dalam kode MOF, tetapi Anda dapat membuat instans secara terprogram dengan menggunakan Scripting API untuk WMI atau COM API untuk WMI.
Prosedur berikut menjelaskan cara menggunakan contoh.
Untuk menggunakan contoh
Salin MOF berikut ke file teks dan simpan dengan ekstensi .mof.
Di jendela prompt perintah, kompilasi file MOF dengan menggunakan perintah berikut:
Mofcomp filename**.mof**
Catatan
Ketika kode MOF dikompilasi ke dalam namespace layanan root\subscription, SMTPEventConsumer dikompilasi ke dalam namespace yang sama.
#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 ;
};
Topik terkait