ZF2: definir conjunto de caracteres UTF-8 no cabeçalho do e-mail

Exibir caracteres especiais corretamente (por exemplo, umlaute alemão ä, ö, ü) em e-mails pode ser complicado. O manual do Zend Framework 2 (ZF2) sugere a chamada

ZendMailMessage::setEncoding('UTF-8');

Isso funciona corretamente em alguns clientes de e-mail (por exemplo, Gmail), mas outros clientes podem bagunçar os caracteres especiais ou até mesmo não exibir a marcação html corretamente. O seguinte código ZF2 define o cabeçalho do e-mail do tipo de conteúdo e o conjunto de caracteres UTF-8 corretamente para e-mails html:

/** @var ZendMailMessage $mail */

// Setup mail with html markup
$mail
->setSubject($subject);
$html
= new ZendMimePart($text);
$html
->type = 'text/html';
$body
= new ZendMimeMessage;
$body
->setParts(array($html));
$mail
->setBody($body);

// Set UTF-8 charset
$headers
= $mail->getHeaders();
$headers
->removeHeader('Content-Type');
$headers
->addHeaderLine('Content-Type', 'text/html; charset=UTF-8');