buildMimeMessage method
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;
}