Using Outlook VBA to Automatically BCC Emails

I am trying to use a variant of this widely available VBA code to automatically BCC  all email sent from Outlook 2007 to 2 email address.  

 Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'comments
'This version is suitable for Outlook 2003 or later. It uses Outlook objects exclusively and
'includes error handling to avoid problems with an invalid Bcc address.
'Place this VBA code in the built-in ThisOutlookSession module
 

    Dim objRecip As Recipient
    Dim strMsg As String
    Dim res As Integer
    Dim strBcc As String
    On Error Resume Next
 
    ' #### USER OPTIONS ####
    ' address for Bcc -- must be SMTP address or resolvable
    ' to a name in the address book
    strBcc = "email1@somedomain.com"
    Set objRecip = Item.Recipients.Add(strBcc)
    objRecip.Type = olBCC
    
    strBcc = "email2@somedomain.com"
    Set objRecip = Item.Recipients.Add(strBcc)
    objRecip.Type = olBCC
         
      
    If Not objRecip.Resolve Then
        strMsg = "Could not resolve the Bcc recipient. " & _
                 "Do you want still to send the message?"
        res = MsgBox(strMsg, vbYesNo + vbDefaultButton1, _
                "Could Not Resolve Bcc Recipient")
        If res = vbNo Then
            Cancel = True
        End If
    End If
 
    Set objRecip = Nothing
End Sub

Open in new window


When I send the email I immediately receive the following report into my inbox

Your message did not reach some or all of the intended recipients.

      Subject:      Subject Here
      Sent:      21/09/2011 10:23

The following recipient(s) cannot be reached:


Yet the email addresses are all valid and the emails are being delivered,  and the report lists no email addresses.

How do I prevent this report being triggered, why am I receiving it.

Is it a bug in my code or something else? When I only use one email address for BCC it works perfectly.
 When the BCC field is filled in manually, everything works properly and I get no errors or reports.  This suggests to me that there may be a problem with the code.
weegiraffeAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
David LeeConnect With a Mentor Commented:
Hi, weegiraffe.

I don't see any errors in the code.  That said, the code is only resolving the second BCC address.  The fact that the first address isn't resolved could be causing the problem.  I've modified the code to include modifying the way it words so all of the BCC addresses are resolved, if any of them are unresolved the user is offered the chance to cancel the message, and you can now add more BCC addressees without having to write more code.
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    'On the next line edit the list of address to BCC to'
    Const BCC_RECIPIENTS = "email1@somedomain.com,email2@somedomain.com"
    Dim objRecip As Recipient, arrRecipients As Variant, varRecipient As Variant
    On Error Resume Next
    arrRecipients = Split(BCC_RECIPIENTS, ",")
    For Each varRecipient In arrRecipients
        Set objRecip = Item.Recipients.Add(varRecipient)
        objRecip.Type = olBCC
        If Not objRecip.Resolve Then
            If MsgBox("Could not resolve the Bcc recipient. Do you want still to send the message?", vbYesNo + vbDefaultButton1, "Could Not Resolve Bcc Recipient") = vbNo Then
                Cancel = True
                Exit For
            End If
        End If
    Next
    On Error GoTo 0
    Set objRecip = Nothing
End Sub

Open in new window

0
 
weegiraffeAuthor Commented:
Thank you BlueDevilFan.  That code works.
0
 
David LeeCommented:
You're welcome.  Glad I could help.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.