Outlook 2010规则:如果超过5个收件人,则移动邮件

时间:2013-02-06 22:43:05

标签: vba outlook-2010

我收到5个以上收件人的电子邮件的唯一时间是办公室八卦一下。我希望制作一个规则/过滤器,将超过5个收件人的任何传入邮件移动到垃圾文件夹中。

Outlook 2010可以实现吗?我在默认规则中找不到类似的东西,不确定你是否可以通过Macro或其他东西VBA规则。

感谢任何见解,帮助或资源。

2 个答案:

答案 0 :(得分:3)

此链接:How to replace text in the body of an incoming message with a hyperlink in Outlook 2010?显示了在使用“消息到达后”条件时如何创建自定义操作。您需要更改VBA代码以询问您的mailitem以查看它是否有5个以上的收件人,然后将mailitem移动到您的垃圾文件夹。

通过查看MailItem.To属性(以分号分隔的字符串)可以找到收件人

如果邮件符合您的条件,则您可以使用MailItem.Move方法将邮件移至所需的文件夹。

此链接:MailItem Members (Outlook)提供有关MailItem对象的更多信息。

答案 1 :(得分:3)

如果有兴趣的话,我使用DeanOC提供的资源编写了VBA脚本。

此脚本接收所有传入的电子邮件并计算To:字段中的收件人,如果收件人数大于5,则将其标记为已读,并且移动到Gossip文件夹。

还有一个次要条件来检查主题是否包含CVS(我们从包含10个收件人的并发版本系统获取更新)并移动到相应的文件夹。

Sub moveOfficeGossip(item As Outlook.MailItem)

    Dim strNames As String, i As Integer, j As Integer, cvs As String
    Dim olApp As New Outlook.Application
    Dim olNameSpace As Outlook.NameSpace
    Dim olDestFolder As Outlook.MAPIFolder

    j = 1
    cvs = "CVS"
    strNames = item.To
    Set olNameSpace = olApp.GetNamespace("MAPI")

    For i = 1 To Len(strNames)
        If Mid(strNames, i, 1) = ";" Then j = j + 1
    Next i

    If (j >= 5) Then
        If InStr(UCase(item.subject), cvs) Then
            Set olDestFolder = olNameSpace.Folders("Personal Folders").Folders("Filtered").Folders("CVS")
            item.Move olDestFolder
        Else
            Set olDestFolder = olNameSpace.Folders("Personal Folders").Folders("Filtered").Folders("Gossip")
            item.UnRead = False
            item.Move olDestFolder
        End If
    End If

End Sub

我很抱歉,如果这不是最正式的格式,我知道它可以更好地组织,但这是我第一次尝试使用任何Visual Basic语法。