Solved

Using Outlook VBA to Automatically BCC Emails

Posted on 2011-09-21
3
515 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
  • 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

Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

Question has a verified solution.

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

You need to know the location of the Office templates folder, so that when you create new templates, they are saved to that location, and thus are available for selection when creating new documents.  The steps to find the Templates folder path are …
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…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

685 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