How to check recipient addresses before sending through Outlook?
In some times, you may miss adding some important recipients into To, CC or BCC fields while sending E-mails through Outlook. Here, I can introduce a method to check if the specific email addresses have been added before sending through Outlook.
Here I have two codes can help you solving this job, you can choose anyone as you need.
1. Press Alt + F11 keys to enable Microsoft Visual Basic for Applications window.
2. Double click ThisOutlookSession from Project1 pane to open the code editor, copy and paste below code to editor.
VBA: check recipient address in To field before sending
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("email@example.com", "firstname.lastname@example.org", "email@example.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
In the code, you can change ("firstname.lastname@example.org", "email@example.com", "firstname.lastname@example.org") to the real recipients you need.
3. Then also in the Microsoft Visual Basic for Applications window, click Tools > References. Check Microsoft Scripting Runtime checkbox in References-Project1 dialog.
4. Click OK and save the code.
Now If the specified recipients do not appear in To field while sending emails, a dialog will pop out to remind you if to send the email.
With above code, it only check the email addresses in To field, if you want to check in To, CC and BCC fields, you can use below code.
VBA: check recipient address in To/CC/BCC fields before sending
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 = "email@example.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
With this code, you do not need to check Microsoft Scripting Runtime checkbox, just directly save the code to take effect.
- Auto CC/BCC by rules when sending email; Auto Forward Multiple Emails by custom; Auto Reply without exchange server, and more automatic features...
- BCC Warning - show message when you try to reply all if your mail address is in the BCC list; Remind When Missing Attachments, and more remind features...
- Reply (All) With All Attachments in the mail conversation; Reply Many Emails in seconds; Auto Add Greeting when reply; Add Date into subject...
- Attachment Tools: Manage All Attachments in All Mails, Auto Detach, Compress All, Rename All, Save All... Quick Report, Count Selected Mails...
- Powerful Junk Emails by custom; Remove Duplicate Mails and Contacts... Enable you to do smarter, faster and better in Outlook.