Solved

Using Outlook VBA to Automatically BCC Emails

Posted on 2011-09-21
3
548 Views
Last Modified: 2012-05-12
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.
0
Comment
Question by:weegiraffe
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 76

Accepted Solution

by:
David Lee earned 500 total points
ID: 36590807
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
 

Author Comment

by:weegiraffe
ID: 36713115
Thank you BlueDevilFan.  That code works.
0
 
LVL 76

Expert Comment

by:David Lee
ID: 36714125
You're welcome.  Glad I could help.
0

Featured Post

Enroll in May's Course of the Month

May’s Course of the Month is now available! Experts Exchange’s Premium Members and Team Accounts have access to a complimentary course each month as part of their membership—an extra way to increase training and boost professional development.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Finding original email is quite difficult due to their duplicates. From this article, you will come to know why multiple duplicates of same emails appear and how to delete duplicate emails from Outlook securely and instantly while vital emails remai…
In this step by step procedure, you will come to know the details of creating an Outlook meeting in 2007, 2010, 2013 & 2016.
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

739 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question