Sample code for 30+ languages & platforms
Unicode C

Email BCC Recipients

See more Email Object Examples

Explains the meaning of BCC recipients, how it is different than CC recipients, and how Chilkat handles BCC.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkEmailW.h>

void ChilkatSample(void)
    {
    HCkEmailW email;
    int numBcc;
    int i;

    //  In the context of email communication, the BCC (Blind Carbon Copy) field is used to send a copy of an email
    //  to recipients without revealing their addresses to other recipients. When it comes to the MIME
    //  header of an email, the BCC email addresses should not be included.
    //  
    //  The MIME header is a part of an email message that contains metadata and other information about the email,
    //  such as the sender, recipient(s), subject, and other details. However, the BCC field is meant to be a confidential field,
    //  and its purpose is to hide the recipients� email addresses from each other.
    //  
    //  Including BCC email addresses in the MIME header would defeat the purpose of using BCC since it would expose
    //  the hidden recipients� addresses to the other recipients. This violates the intended privacy and confidentiality of the BCC feature.
    //  
    //  To maintain the confidentiality of BCC recipients, the BCC field should only be used in the envelope of
    //  the email during the SMTP (Simple Mail Transfer Protocol) transaction. The SMTP server handles the actual
    //  delivery of the email to the respective recipients while keeping the BCC information hidden from other recipients.
    //  
    //  It is important to ensure that BCC email addresses are not included in the MIME header of an email to
    //  preserve the privacy and confidentiality of the recipients.

    //  -----------------------------------------------------------------------------------------
    //  To discuss how Chilkat handles BCC, let's first create an email with some BCC recipients.
    email = CkEmailW_Create();

    CkEmailW_AddTo(email,L"Joe",L"joe@example.com");
    CkEmailW_AddTo(email,L"Mary",L"mary@example.com");
    CkEmailW_AddCC(email,L"Steve",L"steve@example.com");
    CkEmailW_AddBcc(email,L"Jerry",L"jerry@example.com");
    CkEmailW_AddBcc(email,L"Tom",L"tom@example.com");

    CkEmailW_putSubject(email,L"test");
    CkEmailW_putBody(email,L"test");

    //  Let's examine the MIME
    wprintf(L"%s\n",CkEmailW_getMime(email));
    wprintf(L"----------------\n");

    //  We have the following.
    //  Notice the BCC addresses are not present.  They are not included in the MIME header.

    //  MIME-Version: 1.0
    //  Date: Mon, 10 Jul 2023 13:57:22 -0500
    //  Message-ID: <34606FFCB4A440B20E549A223F2F7BF0EB10EE2C@SLICE>
    //  Content-Type: text/plain; charset=us-ascii; format=flowed
    //  Content-Transfer-Encoding: 7bit
    //  X-Priority: 3 (Normal)
    //  To: Joe <joe@example.com>, Mary <mary@example.com>
    //  Cc: Steve <steve@example.com>
    //  Subject: test
    //  
    //  test

    //  However the BCC address are still stored in the Chilkat email object.
    //  For example, you can examine the BCC recipients in the email object like this:
    numBcc = CkEmailW_getNumBcc(email);
    wprintf(L"Num BCC recipients = %d\n",numBcc);

    i = 0;
    while (i < numBcc) {
        wprintf(L"%d\n",i);
        wprintf(L"%s\n",CkEmailW_getBcc(email,i));
        wprintf(L"%s\n",CkEmailW_getBccName(email,i));
        wprintf(L"%s\n",CkEmailW_getBccAddr(email,i));
        wprintf(L"-----\n");
        i = i + 1;
    }

    //  Output:

    //  Num BCC recipients = 2
    //  0
    //  Jerry <jerry@example.com>
    //  Jerry
    //  jerry@example.com
    //  -----
    //  1
    //  Tom <tom@example.com>
    //  Tom
    //  tom@example.com
    //  -----

    //  Thus, when the email is sent, it will also be sent to the BCC recipients,
    //  but the email received by each of the recipients (i.e. the raw MIME of the email) 
    //  should not and will not include the BCC email addresses.  There should be no way
    //  for the recipients to know that the email was sent to the BCC addresses -- because if 
    //  there is a way to know, then it is not truly BCC.


    CkEmailW_Dispose(email);

    }