PHPMailer 没有在 header 中正确设置字符集

PHPMailer not setting charset in header correctly

我正在使用 PHPMailer 6.1.8 发送纯文本邮件。我想用 utf8 编码发送它们,但在 Thunderbird 中,收到的电子邮件在 header:

中仍然有错误的内容类型
Content-Type: text/plain; charset=iso-8859-1

我的PHP代码:

function sendMail($subject, $body, $to, $from = 'mail@server1.intranet.lan', array $cc = [], array $bcc = []) {
    $mail = new PHPMailer();
    $mail->charSet = 'UTF-8';
    $mail->setLanguage = 'de';

    $mail->isSMTP();
    $mail->Host = '****';
    $mail->SMTPAuth = true;
    $mail->Username = '****';
    $mail->Password = '****';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;
    
    $mail->setFrom($from);
    $mail->addAddress($to);

    foreach ($cc as $address) {
        $mail->addCC($address);
    }

    foreach ($bcc as $address) {
        $mail->addBCC($address);
    }

    $mail->Subject = $subject;

    $mail->Body = $body;

    $mail->send();
}

PHP 对 属性 名称区分大小写,因此更改为:

$mail->charSet = 'UTF-8';

$mail->CharSet = 'UTF-8';

您可能会认为这是获得体面 IDE 的提示,因为即使没有您 运行 代码,任何优秀的人都会标记此内容。