buildMimeMessage method

MimeMessage buildMimeMessage()

Creates the mime message based on the previous input.

Implementation

MimeMessage buildMimeMessage() {
  // there are not mandatory fields required in case only a Draft message
  // should be stored, for example

  // set default values for standard headers:
  final usedDate = date ?? DateTime.now();
  date ??= usedDate;
  final from = this.from;
  messageId ??= createMessageId(
    (from == null || from.isEmpty) ? 'enough.de' : from.first.hostName,
    isChat: isChat,
    chatGroupId: chatGroupId,
  );
  final originalMessage = this.originalMessage;
  if (subject == null && originalMessage != null) {
    final originalSubject = originalMessage.decodeSubject();
    if (originalSubject != null) {
      subject = createReplySubject(originalSubject);
    }
  }
  if (from != null) {
    setMailAddressHeader('From', from);
  }
  final sender = this.sender;
  if (sender != null) {
    setMailAddressHeader('Sender', [sender]);
  }
  var addresses = to;
  if (addresses != null && addresses.isNotEmpty) {
    setMailAddressHeader('To', addresses);
  }
  addresses = cc;
  if (addresses != null && addresses.isNotEmpty) {
    setMailAddressHeader('Cc', addresses);
  }
  addresses = bcc;
  if (addresses != null && addresses.isNotEmpty) {
    setMailAddressHeader('Bcc', addresses);
  }
  setHeader('Date', DateCodec.encodeDate(usedDate));
  setHeader('Message-Id', messageId);
  if (isChat) {
    setHeader('Chat-Version', '1.0');
  }
  if (subject != null) {
    setHeader('Subject', subject, encoding: subjectEncoding);
  }
  setHeader(MailConventions.headerMimeVersion, '1.0');
  final original = originalMessage;
  if (original != null) {
    final originalMessageId = original.getHeaderValue('message-id');
    setHeader(MailConventions.headerInReplyTo, originalMessageId);
    final originalReferences = original.getHeaderValue('references');
    final references = originalReferences == null
        ? originalMessageId
        : replyToSimplifyReferences
            ? originalReferences
            : '$originalReferences $originalMessageId';
    setHeader(MailConventions.headerReferences, references);
  }
  final text = this.text;
  if (text != null && _attachments.isNotEmpty) {
    addTextPlain(text, transferEncoding: transferEncoding, insert: true);
  }
  _buildPart();
  _message.parse();

  return _message;
}