Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

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 Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Email;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  email: TEmail;
  numBcc: Integer;
  i: Integer;

begin
  //  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 := TEmail.Create;

  email.AddTo('Joe','joe@example.com');
  email.AddTo('Mary','mary@example.com');
  email.AddCC('Steve','steve@example.com');
  email.AddBcc('Jerry','jerry@example.com');
  email.AddBcc('Tom','tom@example.com');

  email.Subject := 'test';
  email.Body := 'test';

  //  Let's examine the MIME
  WriteLn(email.GetMime());
  WriteLn('----------------');

  //  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 := email.NumBcc;
  WriteLn('Num BCC recipients = ' + numBcc);

  i := 0;
  while i < numBcc do
    begin
      WriteLn(i);
      WriteLn(email.GetBcc(i));
      WriteLn(email.GetBccName(i));
      WriteLn(email.GetBccAddr(i));
      WriteLn('-----');
      i := i + 1;
    end;

  //  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.


  email.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.