我想创建一个 Outlook 规则,阻止我发送“收件人:”行中包含超过 10 个电子邮件地址的电子邮件。这可能吗?我在 Windows 7 64 位上使用 Outlook 2010。
我的理由是:我向大量地址发送了一封分发信。我通常将这封电子邮件发送给我自己,并将分发列表地址放在“BCC:”行中。偶尔我会搞砸,不小心将分发列表地址放在“收件人:”行上。这是一个问题,因为每个电子邮件收件人都会看到列表上的所有地址。我希望 Outlook 阻止我这样做,或者至少在我发送之前警告我。
我也欢迎有关如何解决此问题的建议。
答案1
没有内置方法可以做到这一点,但您可以使用宏来实现。
步骤1:
在 Outlook 中,按Alt+F11打开微软 Visual Basic。
在屏幕左侧,展开名为微软Office Outlook并双击此 Outlook 会话。2
在窗口中VbaProject.OTM — TheOutlookSession, 选择应用在左边和物品发送在右侧下拉菜单中。2
将窗口主体中出现的代码替换为以下内容:
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
按Ctrl+S保存。
按Alt+Q返回 Outlook。
如果收件人超过 10 个,此宏将显示警告到字段(根据用于分隔收件人的分号数量)。您可以单击OK
以关闭警告或Cancel
中止。3
1我正在使用 Outlook 2007(西班牙语)。我希望 Outlook 2010 也类似。
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