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

Create DSN (Delivery Status Notification) Email

See more Email Object Examples

Demonstrates how to create a DSN (Delivery Status Notification) Email having the format as defined in RFC 3464.

Chilkat React Native Downloads

React Native
import { CkDateTime, Email, StringBuilder, Xml } from '@chilkat/react-native'

function chilkatExample() {
  const email = new Email();

  email.subject = 'Test';
  email.from = 'joe@example.com';
  email.body = 'This is a test';
  email.addTo('', 'recipient@example.com');

  console.log(email.getMime());
  console.log('');
  console.log('-------------------------------------------------------------');
  console.log('');

  // This is the email we just created:

  // MIME-Version: 1.0
  // Date: Mon, 12 May 2025 11:13:15 -0500
  // Message-ID: <917FA49F75544EF51948B0A52F403B925B51073F@SLICE>
  // Content-Type: text/plain; charset=us-ascii; format=flowed
  // Content-Transfer-Encoding: 7bit
  // X-Priority: 3 (Normal)
  // Subject: Test
  // From: joe@example.com
  // To: recipient@example.com
  // 
  // This is a test

  // -----------------------------------------------------------------
  // Convert the above email into a DSN (Delivery Status Notification)

  const xml = new Xml();
  xml.tag = 'DeliveryStatusFields';
  xml.newChild2('Final-Recipient', 'rfc822; recipient@example.com');
  xml.newChild2('Action', 'failed');
  xml.newChild2('Status', '5.1.2');
  xml.newChild2('Diagnostic-Code', 'smtp; 550 5.1.2 Host unknown (Domain name not found)');
  const dtNow = new CkDateTime();
  dtNow.setFromCurrentSystemTime();
  xml.newChild2('Last-Attempt-Date', dtNow.getAsRfc822(true));

  const headerOnly = true;
  const sbText = new StringBuilder();
  sbText.append('This is an automatically generated Delivery Status Notification.\r\n\r\n');
  sbText.append('Delivery to the following recipient failed permanently:\r\n\r\n');
  sbText.append('    recipient@example.com\r\n\r\n');
  sbText.append('Technical details of permanent failure:\r\n');
  sbText.append('DNS Error: Domain name not found\r\n');

  const explain = sbText.getAsString();

  const dsnEmail = new Email();
  try {
    email.toDsn(explain, xml.getXml(), headerOnly, dsnEmail);
  } catch {
    console.log(email.lastErrorText);
    return;
  }

  console.log(dsnEmail.getMime());

  // Here's the MIME of the DNS email we just created:
  // -------------------------------------------------

  // Content-Type: multipart/report; report-type="delivery-status"; boundary="------------060100020300020303000802"
  // 
  // --------------060100020300020303000802
  // Content-Type: text/plain; charset=windows-1252; format=flowed
  // Content-Transfer-Encoding: 7bit
  // 
  // This is an automatically generated Delivery Status Notification.
  // 
  // Delivery to the following recipient failed permanently:
  // 
  //     recipient@example.com
  // 
  // Technical details of permanent failure:
  // DNS Error: Domain name not found
  // 
  // --------------060100020300020303000802
  // Content-Type: message/delivery-status
  // 
  // Final-Recipient: rfc822; recipient@example.com
  // Action: failed
  // Status: 5.1.2
  // Diagnostic-Code: smtp; 550 5.1.2 Host unknown (Domain name not found)
  // Last-Attempt-Date: Mon, 12 May 2025 11:30:39 -0500
  // 
  // --------------060100020300020303000802
  // Content-Type: text/rfc822-headers; charset=windows-1252
  // 
  // MIME-Version: 1.0
  // Date: Mon, 12 May 2025 11:30:39 -0500
  // Message-ID: <B8E6875D582A78AE779FC0B46ACC8C858CEAF608@SLICE>
  // Content-Type: text/plain; charset=us-ascii; format=flowed
  // Content-Transfer-Encoding: 7bit
  // X-Priority: 3 (Normal)
  // Subject: Test
  // From: joe@example.com
  // To: recipient@example.com
  // --------------060100020300020303000802--
}