Sample code for 30+ languages & platforms
Dart Requires Chilkat v11.0.0+

Forward an Email using CreateForward

See more Email Object Examples

Reads an email from an IMAP server, creates a forward version of the email using the CreateForward method, and sends the email to another recipient.

Chilkat Dart Downloads

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

void main() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  // Read the 1st (most recent) email in an Inbox.
  final imap = CkImap();

  // Connect to an IMAP server.
  imap.ssl = true;
  imap.port = 993;
  try {
    imap.connect('imap.example.com');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Login
  try {
    imap.login('myLogin', 'myPassword');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Select an IMAP mailbox
  try {
    imap.selectMailbox('Inbox');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final numEmails = imap.numMessages;

  // Fetch the email at the last sequence number.
  // (We are assuming the Inbox has at least 1 email)

  final email = CkEmail();
  try {
    imap.fetchEmail(false, numEmails, false, email);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Disconnect from the IMAP server.
  imap.disconnect();

  print(email.subject);

  final eForward = CkEmail();
  try {
    email.toForward(eForward);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // The eForward email has no To or CC recipients yet.
  // Add one or more..
  eForward.addTo('Joe', 'joe@example.com');

  // We also need to specify the From name/address.
  eForward.fromAddress = 'matt@someMailServer.com';
  eForward.fromName = 'Matt';

  // If we wish to add text at the start of the email body:
  final sbHtmlBody = CkStringBuilder();
  if (eForward.hasHtmlBody()) {
    sbHtmlBody.append(eForward.getHtmlBody());
    sbHtmlBody.prepend('<p>Hello, this is an email I\'m forwarding to you...</p>');
    eForward.setHtmlBody(sbHtmlBody.getAsString());
  }

  final sbPtBody = CkStringBuilder();
  if (eForward.hasPlainTextBody()) {
    sbPtBody.append(eForward.getPlainTextBody());
    sbPtBody.prepend('Hello, this is an email I\'m forwarding to you...\r\n\r\n');
    eForward.setTextBody(sbPtBody.getAsString(), 'text/plain');
  }

  // We could save the .eml, then double-click on it to view in our mail program, such as Outlook or Thunderbird..
  eForward.saveEml('qa_output/forward.eml');

  // We could send (forward) the email..
  final mailman = CkMailMan();

  mailman.smtpHost = 'smtp.example.com';
  mailman.smtpUsername = 'myLogin';
  mailman.smtpPassword = 'myPassword';
  mailman.smtpPort = 587;
  mailman.startTLS = true;

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

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

  print('Mail Sent!');
}