我的 PHPMailer 相关选项配置如下:
$mailer = new PHPMailer();
$mailer->IsSMTP();
$mailer->SMTPAuth = true;
$mailer->CharSet = "UTF-8";
$mailer->isHTML(true);
然后,如果我尝试向我的 hotmail.com 帐户发送一封电子邮件,在主题字段中使用一些表情符号,如下所示:
$foo = "\xF0\x9F\x94\xA5 text \xF0\x9F\x94\xA5";
$mail->Subject = $foo;
$mail->Body = "<p style='font-size:100px'>Mail body: $foo</p>";
邮件发送正常,邮件主题中正确显示了被两个小火表情符号包围的“文本”一词。邮件正文也正确显示:
如果我试试这个:
$foo = "\xF0\x9F\x94\xA5 text text \xF0\x9F\x94\xA5";
$mail->Subject = $foo;
$mail->Body = "<p style='font-size:100px'>Mail body: $foo</p>";
主题和正文再次正确显示:
但如果我添加另一个“文本”字样:
$foo = "\xF0\x9F\x94\xA5 text text text \xF0\x9F\x94\xA5";
$mail->Subject = $foo;
$mail->Body = "<p style='font-size:100px'>Mail body: $foo</p>";
然后会发生这种情况:
所以主题表情符号被替换为每个 4 个问号(可能是包含表情符号 unicode 字符的 4 个字节?)
怎么了?
喵喔喔