Sample code for 30+ languages & platforms
Dart

Example to Add Several BCC Email Recipients

See more Email Object Examples

Demonstrates how to call AddBCC once per email recipient.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  final email = CkEmail();

  email.subject = 'Test email subject';
  email.body = 'Test email body';

  email.from = 'Test <joe@example.com>';

  // Add a primary TO recipient
  email.addTo('Elizabeth', 'elizabeth@example.com');

  // Add a CC recipient.
  email.addCC('Jerry', 'jerry@example.com');

  // Add 2 BCC recipients.
  email.addBcc('Mira', 'mira@example.com');
  email.addBcc('Alexander', 'alex@example.com');

  // BCC recipients will not be present in the MIME of the email that is sent.
  // However, the BCC recipients are included in the recipients provided to the SMTP server
  // during the SMTP protocol conversation. This will be shown below.

  // First, let's look at the MIME.
  print(email.getMime());

  // MIME-Version: 1.0
  // Date: Sat, 30 Oct 2021 07:58:32 -0500
  // Message-ID: <183D5F51163BE4374B494D2ED067DE2783CC761B@SLICE>
  // Content-Type: text/plain; charset=us-ascii; format=flowed
  // Content-Transfer-Encoding: 7bit
  // X-Priority: 3 (Normal)
  // Subject: Test email subject
  // From: Test <joe@example.com>
  // To: Elizabeth <elizabeth@example.com>
  // Cc: Jerry <jerry@example.com>
  // 
  // Test email body

  // Notice that the BCC recipients do not appear in the MIME.  But don't worry, they are still present within the email object.
  // The difference between CC and BCC recipients is that CC recipients appear in the MIME.  Thus, the recipient of the email
  // can see the CC recipients, but cannot see and is unaware of the BCC recipients.

  // ----------------------------------------------------------------------------------------------
  // Let's send the above email and examine the SMTP session log to show that the BCC recipients also receive the email.

  final mailman = CkMailMan();

  mailman.smtpHost = 'smtp.example.com';
  mailman.smtpUsername = 'myUsername';
  mailman.smtpPassword = 'myPassword';
  mailman.smtpSsl = true;
  mailman.smtpPort = 465;

  try {
    mailman.sendEmail(email);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  try {
    mailman.closeSmtpConnection();
  } on ChilkatException {
    print('Connection to SMTP server not closed cleanly.');
  }

  print('Mail Sent!');

  // Examine the SMTP session log.
  print(mailman.smtpSessionLog);

  // Here you can see the session log and the BCC email addresses included in the "RCPT TO" commands.

  // 220 smtp.example.com ESMTP Example SMTP Service
  // EHLO SLICE<CRLF>
  // 250-smtp.example.com
  // 250-8BITMIME
  // 250-AUTH PLAIN LOGIN
  // 250 Ok
  // AUTH LOGIN<CRLF>
  // 334 VXNlcm5hbWU6
  // ***<CRLF>
  // 334 UGFzc3dvcmQ6
  // {PasswordOrCredentials}
  // 235 Authentication successful.
  // MAIL FROM:<joe@example.com><CRLF>
  // 250 Ok
  // RCPT TO:<elizabeth@example.com><CRLF>
  // 250 Ok
  // RCPT TO:<jerry@example.com><CRLF>
  // 250 Ok
  // RCPT TO:<mira@example.com><CRLF>
  // 250 Ok
  // RCPT TO:<alex@example.com><CRLF>
  // 250 Ok
  // DATA<CRLF>
  // 354 End data with <CR><LF>.<CR><LF>
  // {388 bytes}
  // <CRLF>.<CRLF>
  // 250 Ok
  // QUIT<CRLF>
  // 221 Bye
}