2013-12-16 68 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,并且工作正常!

相关问题