在工作中,我们使用共享的Outlook邮箱接收来自我们用户的电子邮件,目前我们轮流监控邮箱和回复等。我们的工作时间是自我们开始以来的上午7点至下午5点电子邮件地址。
在接下来的两个月内,我们将在几个小时内改变,我们(或者我应该说,仅限我自己)将在晚上11点之前监控邮箱。
我想要做的是收集我们收到的电子邮件的一些统计数据,以便从业务视图中查看是否值得,以便在跟踪之后保持稍后的转变。
我想要做的是使用一些VBA检查收件箱中的电子邮件,然后将数据分解为一些统计数据以供管理,例如:
Monday 06/05/12:
49 emails received, 34 were replies, 15 were new
At 7am received: 0 emails
At 8am received: 1 emails
------
At 11pm received: 0 emails
等
如果电子邮件是原件或回复,我认为最容易看出主题是否以RE开头? (我知道这不是万无一失的,但我认为这对基本统计数据有效)
以前有人做过这样的事吗?这样做有简单/正确的方法吗?
任何人都有任何有用的提示/代码示例吗?
答案 0 :(得分:2)
你可以从这样的事情开始
Sub EmailStats()
Dim olMail As MailItem
Dim aOutput() As Variant
Dim lCnt As Long
Dim xlApp As Excel.Application
Dim xlSh As Excel.Worksheet
Dim flInbox As Folder
Set flInbox = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
ReDim aOutput(1 To flInbox.Items.Count, 1 To 4)
For Each olMail In flInbox.Items
If TypeName(olMail) = "MailItem" Then
lCnt = lCnt + 1
aOutput(lCnt, 1) = olMail.SenderEmailAddress 'maybe stats on domain
aOutput(lCnt, 2) = olMail.ReceivedTime 'stats on when received
aOutput(lCnt, 3) = olMail.ConversationTopic 'group based on subject w/o regard to prefix
aOutput(lCnt, 4) = olMail.Subject 'to split out prefix
End If
Next olMail
Set xlApp = New Excel.Application
Set xlSh = xlApp.Workbooks.Add.Sheets(1)
xlSh.Range("A1").Resize(UBound(aOutput, 1), UBound(aOutput, 2)).Value = aOutput
xlApp.Visible = True
End Sub
如果要添加更多数据,只需更改Redim
语句以容纳更多列,并将其添加到If块中。一旦进入Excel(或者可能是Access或SQLServer,如果有大量数据),你可以添加一些计算,比如
=IF(LEFT(@Subject,3)="RE:","Reply",IF(LEFT(@Subject,3)="FW:","Forward","Original"))
然后疯狂地转动。
您需要引用Excel对象库才能使上述代码生效。
答案 1 :(得分:1)
我会后退一步,使用邮件服务器中的日志文件来回答这个问题。
每天一次,您只需提取邮箱收到的所有电子邮件的报告即可。如果您个人无权访问它们,那么您的邮件管理员应该。
答案 2 :(得分:0)
有一个名为OutlookStatView的漂亮工具,由NirSoft的优秀人员制作。
截图示例:
如果您不太热衷于使用VBA,请尝试使用相同的高级过滤选项,使用它可以选择特定文件夹,并启动日期时间和结束日期时间进行监控。
注意:这不是实时或自动的,它是一种演示可能性的手动方式。
在Windows 2000 / XP / Vista / 2003/2008/7/8/10上运行。
支持任何版本的Microsoft Outlook,包括Outlook 2016。
我正在寻找Mac& Linux替代品。
类似但不相同