利用FileSystemWatcher監控文件的更改,併發送郵件通知

工作中遇到了一個需求:文件服務器的一個DWG文件夾如果要更改,就要及時通知相關的人。所以我利用FileSystemWatcher寫了個小程序,監控指定目錄,如果文件被創建,刪除,修改,重命名,就會發送郵件到相關的人。

將其加入文件服務器的開機腳本,經測試通過。

開發環境Windows 7,Microsoft Visual Studio 2010,運行環境Windows server 2008.

新建一個窗體,一個label,一個timer。

以下爲源碼,

Imports System
Imports System.IO
Imports Microsoft.VisualBasic
Imports System.Security.Permissions
Imports System.Net.Mail
Imports System.Text


Public Class Form1
    Public sb As New StringBuilder
    Public mailStr As String

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim MyWatcher As New System.IO.FileSystemWatcher()
        Label1.Text = "I am watching......"

        '定義需要監控的目錄
        MyWatcher.Path = "c:\share"
        '定義需要監控的文件類型
        MyWatcher.Filter = "*.dwg"
        MyWatcher.IncludeSubdirectories = False
        MyWatcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
        AddHandler MyWatcher.Changed, AddressOf OnChanged
        AddHandler MyWatcher.Created, AddressOf OnCreated
        AddHandler MyWatcher.Deleted, AddressOf OnDeleted
        AddHandler MyWatcher.Renamed, AddressOf OnRenamed
        MyWatcher.EnableRaisingEvents = True

    End Sub
    Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
        sb.Append("Hi")
        sb.Append(vbCrLf)
        sb.Append("You are informed that the file " & e.Name & " " & " is changed.")
        sb.Append(vbCrLf)
        sb.Append("----------------------------------------------------------------------")
        sb.Append(vbCrLf)
        sb.Append("This email was sent from the FileWatching program, please do not reply.")
        mailStr = sb.ToString
        sb.Remove(0, Len(mailStr))
        Call sendMail(mailStr)
    End Sub
    Private Sub OnCreated(ByVal source As Object, ByVal e As FileSystemEventArgs)
        sb.Append("Hi")
        sb.Append(vbCrLf)
        sb.Append("You are informed that the file " & e.Name & " " & " is created.")
        sb.Append(vbCrLf)
        sb.Append("----------------------------------------------------------------------")
        sb.Append(vbCrLf)
        sb.Append("This email was sent from the FileWatching program, please do not reply.")
        mailStr = sb.ToString
        sb.Remove(0, Len(mailStr))
        Call sendMail(mailStr)
    End Sub
    Private Sub OnDeleted(ByVal source As Object, ByVal e As FileSystemEventArgs)
        sb.Append("Hi")
        sb.Append(vbCrLf)
        sb.Append("You are informed that the file " & e.Name & " " & " is deleted.")
        sb.Append(vbCrLf)
        sb.Append("----------------------------------------------------------------------")
        sb.Append(vbCrLf)
        sb.Append("This email was sent from the FileWatching program, please do not reply.")
        mailStr = sb.ToString
        sb.Remove(0, Len(mailStr))
        Call sendMail(mailStr)
    End Sub

    Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)
        sb.Append("Hi")
        sb.Append(vbCrLf)
        sb.Append("You are informed that the file " & e.OldName & " renamed to " & e.Name)
        sb.Append(vbCrLf)
        sb.Append("----------------------------------------------------------------------")
        sb.Append(vbCrLf)
        sb.Append("This email was sent from the FileWatching program, please do not reply.")
        mailStr = sb.ToString
        sb.Remove(0, Len(mailStr))
        Call sendMail(mailStr)
    End Sub


    Private Sub sendMail(ByVal fileUpdates As String)
        '郵件的發送者和接受者
        Dim mailMsg As New MailMessage([email protected], "[email protected]")
        With mailMsg
            '郵件主題
            .Subject = "DWG File is Updated"
            '郵件內容
            .Body = fileUpdates
        End With
        '設置SMTP服務器,DNS名或者IP
        Dim client As New SmtpClient("mailserverxxx")
        client.Send(mailMsg)

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Me.Hide()
    End Sub
End Class
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章