如何在通过 Outlook 发送邮件前检查收件人地址?
有时,在使用 Outlook 发送邮件时,您可能会不小心遗漏在收件人、抄送或密送栏中添加某些重要联系人。本文将为您介绍一种方法,帮助您在通过 Outlook 发送邮件前,检查是否已添加指定的邮箱地址。
使用 VBA 代码发送前检查地址
这里为您提供两段代码,您可根据需求灵活选择使用。
1. 请按下 Alt + F11 组合键,即可打开 Microsoft Visual Basic for Applications 窗口。
2. 双击 ThisOutlookSession,在 Project 1 窗格中打开代码编辑器,然后将以下代码复制并粘贴到编辑器中。
VBA:发送前检查收件人地址是否在收件人栏中
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'UpdatebyExtendoffice20180523
Dim xAddressArr() As Variant
Dim xAddress As String
Dim xRecipient As Recipient
Dim xPrompt As String
Dim xYesNo As Integer
Dim xDictionary As Scripting.Dictionary
On Error Resume Next
Set xDictionary = New Scripting.Dictionary
xAddressArr = Array("example1@126.com", "example2@126.com", "example3@126.com")
For i = LBound(xAddressArr) To UBound(xAddressArr)
xDictionary.Add xAddressArr(i), True
Next i
For Each xRecipient In Item.Recipients
If xRecipient.Type = olTo Then
If xDictionary.Exists(xRecipient.Address) Then xDictionary.Remove xRecipient.Address
End If
Next
If xDictionary.Count = 0 Then GoTo L1
For i = 0 To xDictionary.Count - 1
If xAddress = "" Then
xAddress = xDictionary.Keys(i)
Else
xAddress = xAddress + "; " & xDictionary.Keys(i)
End If
Next i
xPrompt = "You are not sending this to: " & xAddress & ". Are you sure you want to send the Mail?"
xYesNo = MsgBox(xPrompt, vbQuestion + vbYesNo, "Kutools for Outlook")
If xYesNo = vbNo Then Cancel = True
L1:
Set xRecipient = Nothing
Set xDictionary = Nothing
End Sub 
在代码中,您可以将(“example 1@126.com”、“example 2@126.com”、“example 3@126.com”)替换为您实际需要的收件人地址。
3. 然后同样在 Microsoft Visual Basic for Applications 窗口中,点击工具 > 引用,在 References-Project 1 对话框中勾选 Microsoft Scripting Runtime 复选框。
![]() | ![]() | ![]() |
4. 点击确定,即可保存代码。
现在,如果您在发送邮件时指定的收件人未出现在收件人栏,系统将弹出对话框提醒您是否继续发送该邮件。
上述代码仅会检查邮箱地址是否位于收件人栏。如需同时在收件人、抄送和密送栏中进行检查,请使用下方代码。
VBA:发送前检查收件人/抄送/密送栏地址
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'UpdatebyExtendoffice20180523
Dim xRecipients As Outlook.Recipients
Dim xRecipient As Outlook.Recipient
Dim xPos As Integer
Dim xYesNo As Integer
Dim xPrompt As String
Dim xAddress As String
On Error Resume Next
If Item.Class <> olMail Then Exit Sub
Set xRecipients = Item.Recipients
xAddress = "example1@gmail.com"
For Each xRecipient In xRecipients
xPos = InStr(LCase(xRecipient.Address), xAddress)
If xPos = 0 Then
xPrompt = "You sending this to " & xAddress & ". Are you sure you want to send it?"
xYesNo = MsgBox(xPrompt, vbYesNo + vbQuestion + 4096, "Kutools for Outlook")
If xYesNo = vbNo Then Cancel = True
End If
Next xRecipient
End Sub 无需勾选 Microsoft Scripting Runtime 复选框,直接保存代码即可生效。
Outlook AI 邮件助手:智能回复,沟通更高效清晰(只需一键,轻松体验神奇效果!)
通过 Kutools for Outlook 的 AI 邮件助手,轻松提升您的日常 Outlook 工作效率。该强大工具能够智能学习您的邮件习惯,提供高效、精准的回复建议,优化邮件内容,助您轻松起草和润色邮件。

该功能支持:
- 智能回复:根据您的历史对话内容生成个性化且精准的回复,随时为您所用。
- 内容优化:自动完善您的邮件文本,让表达更加清晰且更具影响力。
- 轻松写作:您只需输入关键词,剩下的交给 AI,多种润色风格随心选择。
- 智能扩展:结合上下文,智能拓展您的想法,提供精准建议。
- 智能摘要:轻松为冗长邮件快速生成简明概览,让信息一目了然。
- 全球畅邮:轻松将邮件翻译为任意语言。
该功能支持:
- 智能邮件回复
- 内容优化
- 关键词草稿
- 智能内容扩展
- 邮件摘要
- 多语言翻译
最佳办公效率工具
体验全新 Kutools for Outlook,畅享 100+ 强大功能!立即点击下载,不容错过!
🤖KUTOOLS AI:采用先进 AI 技术,轻松处理邮件,涵盖回复、摘要、优化、扩展、翻译及撰写等功能。
📧 邮件自动化:自动答复(支持 POP 和 IMAP)/定时发送邮件/发送邮件时按规则自动抄送密送/自动转发(高级规则)/自动添加称呼/自动将多收件人邮件拆分为单独信息……
📨 邮件管理:撤回邮件/按主题等条件拦截诈骗邮件/删除重复邮件/高级搜索/整合文件夹……
📁 附件增强:批量保存/批量分离/批量压缩/自动保存/自动拆离/自动压缩……
🌟 界面魔法:😊更多美观时尚表情/重要邮件到达时提醒您/最小化 Outlook 而不是直接关闭……
👍 一键精彩功能:带附件全部答复/反钓鱼邮件/🕘显示发送者当前时间时区……
👩🏼🤝👩🏻 联系人与日历:批量从选定邮件中提取添加联系人/将联系人组拆分为个人组/移除生日提醒……
在您的首选语言中畅享 Kutools —— 支持英语、西班牙语、德语、法语、中文等 40 多种语言!
一键解锁 Kutools for Outlook,告别等待,立即下载,让效率倍增!


🚀 一键下载 — 即可获取全部 Office 加载项
强烈推荐:Kutools for Office(5 合 1)
一键下载五个安装包,即可同时获得 Kutools for Excel、Outlook、Word、PowerPoint 和 Office Tab Pro。立即点击下载!
- ✅ 一键便捷:只需一次操作,即可下载全部五个安装包。
- 🚀 轻松应对各类 Office 任务:随时按需安装所需插件,助您高效办公,不容错过!
- 🧰 包含:Kutools for Excel / Kutools for Outlook / Kutools for Word / Office Tab Pro / Kutools for PowerPoint


