render method
Renders this mime part with all children parts into the specified buffer
You can set renderHeader to false when the message headers
should not be rendered.
Throws a InvalidArgumentException when this message contains parts but no multipart boundary.
Implementation
void render(StringBuffer buffer, {bool renderHeader = true}) {
final mimeData = this.mimeData;
if (mimeData != null) {
if ((!mimeData.containsHeader || _headersModified) && renderHeader) {
_renderHeaders(buffer);
buffer.write('\r\n');
}
// If headers have been modified, skip rendering headers from mimeData
final renderDataHeader = !_headersModified || !mimeData.containsHeader;
mimeData.render(buffer, renderHeader: renderDataHeader);
} else {
if (renderHeader) {
_renderHeaders(buffer);
buffer.write('\r\n');
}
final parts = this.parts;
if (parts != null && parts.isNotEmpty) {
final multiPartBoundary = getHeaderContentType()?.boundary;
if (multiPartBoundary == null) {
throw InvalidArgumentException(
'mime message rendering error: '
'parts present but no multiPartBoundary defined.',
);
}
for (final part in parts) {
buffer
..write('--')
..write(multiPartBoundary)
..write('\r\n');
part.render(buffer);
buffer.write('\r\n');
}
buffer
..write('--')
..write(multiPartBoundary)
..write('--')
..write('\r\n');
}
}
}