Special characters in email body
Make sure what you're passing in is a renderable array... and render it before assigning it to the message body field:

  $markup = ['#markup' =&gt; "&lt;strong&gt;We do HTML&lt;/strong&gt;"];
  $message['body'][] = render($markup);


Note: This makes some sense i guess but i really just stumbled onto the solution, so i'm not sure how correct it is, but it works.



Incidentally, for the plain-text version i recommend doing what Drupal core's PHP mailer does in its format method:

use Drupal\Core\Mail\MailFormatHelper;

// Join the body array into one string.
$message['body'] = implode("\n\n", $message['body']);

// Convert any HTML to plain-text.
$message['body'] = MailFormatHelper::htmlToText($message['body']);
// Wrap the mail body for sending.
$message['body'] = MailFormatHelper::wrapMail($message['body']);