render method

void render(
  1. StringBuffer buffer, {
  2. bool renderHeader = true,
})

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 && renderHeader) {
      _renderHeaders(buffer);
      buffer.write('\r\n');
    }
    mimeData.render(buffer);
  } 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');
    }
  }
}