addMessagePart method

PartBuilder addMessagePart(
  1. MimeMessage mimeMessage, {
  2. ContentDisposition disposition = ContentDisposition.attachment,
})

Adds the message mimeMessage as a message/rfc822 content.

Optionally specify the disposition which defaults to ContentDisposition.attachment.

Implementation

PartBuilder addMessagePart(
  MimeMessage mimeMessage, {
  ContentDisposition disposition = ContentDisposition.attachment,
}) {
  // message data can be binary or textual
  // even binary message data should not be base64 encoded,
  // since it has itself encodings etc
  final mediaType = MediaSubtype.messageRfc822.mediaType;
  final subject = mimeMessage.decodeSubject()?.replaceAll('"', r'\"');
  final filename = '${subject ?? ''}.eml';
  final messageText = mimeMessage.renderMessage();
  final partBuilder = addPart(
    mimePart: MimePart()
      ..mimeData = TextMimeData(messageText, containsHeader: false),
    mediaSubtype: MediaSubtype.messageRfc822,
    disposition:
        ContentDispositionHeader.from(disposition, filename: filename),
  );
  if (disposition == ContentDisposition.attachment) {
    _attachments.add(
      AttachmentInfo(
        null,
        mediaType,
        filename,
        null,
        disposition,
        utf8.encode(messageText),
        partBuilder,
      ),
    );
  }

  return partBuilder;
}