如何根据“收件人:”地址的数量制定 Outlook 规则?

如何根据“收件人:”地址的数量制定 Outlook 规则?

我想创建一个 Outlook 规则,阻止我发送“收件人:”行中包含超过 10 个电子邮件地址的电子邮件。这可能吗?我在 Windows 7 64 位上使用 Outlook 2010。

我的理由是:我向大量地址发送了一封分发信。我通常将这封电子邮件发送给我自己,并将分发列表地址放在“BCC:”行中。偶尔我会搞砸,不小心将分发列表地址放在“收件人:”行上。这是一个问题,因为每个电子邮件收件人都会看到列表上的所有地址。我希望 Outlook 阻止我这样做,或者至少在我发送之前警告我。

我也欢迎有关如何解决此问题的建议。

答案1

没有内置方法可以做到这一点,但您可以使用宏来实现。

步骤1

  1. 在 Outlook 中,按Alt+F11打开微软 Visual Basic

  2. 在屏幕左侧,展开名为微软Office Outlook并双击此 Outlook 会话2

  3. 在窗口中VbaProject.OTM — TheOutlookSession, 选择应用在左边和物品发送在右侧下拉菜单中。2

  4. 将窗口主体中出现的代码替换为以下内容:

    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
        Dim Recipients As Integer
        Dim Start As Integer
        Dim Last As Integer
        Recipients = 1
        Do
            Start = Last + 1
            Last = InStr(Start, Item.To, ";")
            If Last = 0 Then Exit Do
            Recipients = Recipients + 1
        Loop
        If (Recipients > 10) Then
            Cancel = (MsgBox(Str(Recipients) & " recipients in To field.", vbOKCancel) = vbCancel)
        End If
    End Sub
    
  5. Ctrl+S保存。

  6. Alt+Q返回 Outlook。

如果收件人超过 10 个,此宏将显示警告字段(根据用于分隔收件人的分号数量)。您可以单击OK以关闭警告或Cancel中止。3


1我正在使用 Outlook 2007(西班牙语)。我希望 Outlook 2010 也类似。

2
截屏

3
截屏

答案2

不幸的是,Outlook 无法做到这一点。虽然您可以使用第三方解决方案来限制它(例如 Thunderbird),但您会失去 Outlook 本身的功能。不过,这实际上是一个很好的问题,我希望微软能够更好地控制您可以发送和不能发送的内容!

答案3

我采纳了 Sudo 的回答,并将其中的抄送和密送也计算在内,以防有人需要:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim Recipients As Integer
    Dim Start As Integer
    Dim Last As Integer
    Dim RecipientFields As String
    Recipients = 1

    RecipientFields = Item.To

    If (Item.CC <> "") Then
        RecipientFields = RecipientFields + ";" + Item.CC
    End If

    If (Item.BCC <> "") Then
        RecipientFields = RecipientFields + ";" + Item.BCC
    End If

    Do
        Start = Last + 1
        Last = InStr(Start, RecipientFields, ";")
        If Last = 0 Then Exit Do
        Recipients = Recipients + 1
    Loop

    If (Recipients > 6) Then
        Cancel = (MsgBox("You have " & Str(Recipients) & " recipients in To/CC/BCC fields.  Click OK to send.", vbOKCancel) = vbCancel)
    End If
End Sub

相关内容