2013-12-16 69 views
0

我想按日期顯示收件箱中的電子郵件數量,然後將包含該信息的電子郵件發送給特定用戶。顯示按日期分隔的收件箱中的電子郵件數量

我在這裏的一切工作,除了昨天的日期 - 它顯示了電子郵件數量+1。其他電子郵件數量是正確的。

Sub HowManyEmails() 

    Dim objOutlook As Object, objnSpace As Object, objFolder As MAPIFolder 
    Dim EmailCount As Integer 

    Set objOutlook = CreateObject("Outlook.Application") 
    Set objnSpace = objOutlook.GetNamespace("MAPI") 

    On Error Resume Next 

    Set objFolder = objnSpace.Folders("Mailbox - IT Support Center").Folders("NON TICKET related Emails") 

    If Err.Number <> 0 Then 
     Err.Clear 
     MsgBox "No such folder." 
     Exit Sub 
    End If 

    EmailCount = objFolder.Items.Count 

    MsgBox "Number of emails in the folder: " & EmailCount & " Total Non-Ticket email count" 

    Dim dateStr As String 
    Dim myItems As Outlook.Items 
    Dim dict As Object 
    Dim msg As String 

    Set dict = CreateObject("Scripting.Dictionary") 
    Set myItems = objFolder.Items 

    myItems.SetColumns ("SentOn") 

    ' Determine date of each message: 
    For Each myItem In myItems 
     dateStr = GetDate(myItem.SentOn) 
     If Not dict.Exists(dateStr) Then 
      dict(dateStr) = 0 
     End If 
     dict(dateStr) = CLng(dict(dateStr)) + 1 
    Next myItem 

    ' Output counts per day: 
    For Each o In dict.Keys 
     msg = msg & o & ": " & dict(o) & " Non-Ticket items" & vbCrLf 
    Next 

    MsgBox msg 

    Set objFolder = Nothing 
    Set objnSpace = Nothing 
    Set objOutlook = Nothing 

    'Send Mail 
    Set OutApp = CreateObject("outlook.Application") 
    Set OutMail = OutApp.CreateItem(o) 

    With OutMail 
     .Subject = "Non Ticket Emails" 
     .To = "[email protected]; [email protected]" 
     .Body = msg 
     .Display 
     .Send 
    End With 

    Set OutMail = Nothing 
    Set OutApp = Nothing 

End Sub 
+1

GetDate(myItem.SentOn)'做了什麼? –

+0

我不確定,這是從現有模板複製的。 –

+0

檢查您的代碼。它應該在某個地方 –

回答

0

好的,我發現了這個問題。該腳本捕獲發送的時間,而不是收到的時間(根據哪個Outlook排序)。我在代碼中將senton更改爲receivedtime,並且工作正常!

相關問題