Automatically Bcc someone when sending an email

Bcc buttonWhile you can create a rule to automatically Cc someone when sending a message, unfortunately an automatic Bcc is not possible.

Still, there are various valid reasons to want to do this. For instance, to automatically inform your colleagues or manager, or automatically send it to a mailbox where it is being picked up by a knowledge base process or put into a CRM system.

In these cases, a Bcc is often preferred over a Cc as it would expose these internal addresses to an external recipient.

In this guide, you’ll learn how to use a VBA macro to still be able to automatically Bcc your emails. Additional code modifications are provided to make it conditional, so it would only Bcc depending on the subject, a Category or importance, just like you can with a normal rule.

Don’t like VBA macros? No worries, there are also add-ins, which we can highly recommend, that can do the job.


Always Bcc VBA macro

Visual Basic buttonThe AlwaysBcc macro automatically adds the Bcc recipient of your choice to each emails that you send.

There are no additional buttons that you need to press or prompts that you need to answers. It is that simple; Just set it and forget it.

The person that you’ve Bcc-ed is also shown in the message in your Sent Items folder (but of course not for any recipients).

In the Modifications section, you can find some examples on how to customize the code and to make it conditional. This way you can make it only add the Bcc recipients when the message has a certain subject, category, or importance, or when you specifically allow it to be added.

Quick Install

Use the following instructions to configure the macro in Outlook;

  1. Download this code-file (alwaysbcc.zip) and copy the code from the AlwaysBcc.txt file or copy the code below.
  2. Open the VBA Editor (keyboard shortcut ALT+F11)
  3. Paste the copied code in the ThisOutlookSession module.
  4. Set the Bcc address in the code.
  5. Sign your code so you won’t get any security prompts and the macro won’t get disabled.

Macro Code

The following code is contained in the zip-file referenced in the Quick Install. You can use the code below for review or manual installation.

'Always Bcc a specific recipient
'Place in ThisOutlookSession
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    If TypeOf Item Is MailItem Then
        Dim objRecip As Recipient
        Dim strMsg As String
        Dim msgResult As Integer
        Dim strBcc As String

        ' ===Set your Bcc address below===
        ' This must be an SMTP address or resolvable
        ' to a name in the Address Book.
        strBcc = "bccrecipient@example.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?"
            msgResult = MsgBox(strMsg, vbYesNo + vbDefaultButton1, _
                    "Could Not Resolve Bcc Recipient")
            If msgResult = vbNo Then
                Cancel = True
            End If
        End If
        
        Set objRecip = Nothing
    End If
End Sub

Modifications

How? buttonThe macro will send each email to the configured Bcc recipient.

In case you want to limit which emails the Bcc recipient will get, you can add conditions based on properties of the message, similarly as how you would create a message rule.

The examples below should get you started.

Add Bcc recipient based on Subject, Importance, Category or Account

To filter based on specific words the subject, the importance or the category of the email that you are sending or the email account that you are sending it with, you must alter the following line;

If TypeOf Item Is MailItem Then

To only add the Bcc recipient when a specific word is in the subject;

If (TypeOf Item Is MailItem) And (Instr(Item.Subject, "keyword") > 0) Then

To only add the Bcc recipient when the message is sent with high importance;

If (TypeOf Item Is MailItem) And (Item.Importance = olImportanceHigh ) Then

To only add the Bcc recipient when the message has the “Knowledge Base” category;

If (TypeOf Item Is MailItem) And (Instr(Item.Categories, "Knowledge Base") > 0) Then

To only add the Bcc recipient when the message is sent from a specific account;
(The account name can be found via; File-> Account Settings-> Account Settings…-> tab Email)

If (TypeOf Item Is MailItem) And (Item.SendUsingAccount = "myaccount@example.com") Then

To only add the Bcc recipient when the message is sent from a specific account or is sent with high importance;
(Note that the conditions for the OR statement is put between parentheses/round brackets.)

If (TypeOf Item Is MailItem) And ((Item.SendUsingAccount = "myaccount@example.com") Or (Item.Importance = olImportanceHigh )) Then

Ask to add Bcc recipient before sending

If you want to be prompted to add the Bcc recipient upon sending your message, you can use the code sample below. This sample is also contained in the zip file, referenced in the Quick Install section, as AlwaysBccAsk.txt. The installation of this script works exactly the same.

If you want, you can combine it with the code modifications listed above to determine when you should be prompted.

'Always ask to Bcc a specific recipient
'Place in ThisOutlookSession
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    If TypeOf Item Is MailItem Then
        Dim objRecip As Recipient
        Dim strMsg As String
        Dim msgResult As Integer
        Dim strBcc As String

        ' ===Set your Bcc address below===
        ' This must be an SMTP address or resolvable
        ' to a name in the Address Book.
        strBcc = "bccrecipient@example.com"
        
        strMsg = "Do you want to Bcc this message to " & strBcc & "?"
        msgResult = MsgBox(strMsg, vbYesNo + vbDefaultButton1, _
                        "Send to Bcc recipient?")
                        
        If msgResult = vbYes Then
            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?"
                msgResult = MsgBox(strMsg, vbYesNo + vbDefaultButton1, _
                            "Could Not Resolve Bcc Recipient")
                If msgResult = vbNo Then
                    Cancel = True
                End If
            End If
        End If
        
        Set objRecip = Nothing
    End If
End Sub

Always Bcc with 3rd party tools

Add-Ins buttonIf you are not comfortable doing this manually by code or if you want to be able to more conveniently control when a Bcc should be sent, you can use a supported add-in from Sperry Software called Always BCC or even the more advanced Compliance Copies. Below is an overview of their main features;

Always BCC

  • Perform a CC or a BCC automatically.
  • Supports sending to multiple BCC/CC recipients.
  • Filter based on subject, certain people, sending account, send on behalf of, from address.
  • Filter based on a combination of the properties mentioned above.
  • Discount code: BH93RF24

Compliance Copies

  • Performs a CC or a BCC automatically.
  • Supports multiple BCC conditions to different recipients.
  • Supports exceptions such as when sending to people in my domain.
  • Supports sending under multiple different conditions to different recipients.
  • Discount code: BH93RF24

In other words, the main difference between these two add-ins is that Compliance Copies supports multiple BCC rules for multiple different people and also provides for exceptions to the rules!