我无法让我的 PHP 代码向姓名中包含特殊字符(例如 é à ö)的人发送电子邮件。这是编码的片段:
$firstname = html_entity_decode(($row[firstname]), ENT_QUOTES | ENT_IGNORE, "UTF-8");
$lastname = html_entity_decode(($row[lastname]), ENT_QUOTES | ENT_IGNORE, "UTF-8");
$tofirst = html_entity_decode(($row[firstname]), "UTF-8");
$tolast = html_entity_decode(($row[firstname]), "UTF-8");
$to = $tofirst .' '.$tolast .' <'. $email .'>';
$subject = 'Your submission to the X-tension Dancebase';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Cc: dancers@x-tension.nl, chris@x-tension.nl' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
$headers .= 'From: X-tension Danceproductions <info@x-tension.nl>' . "\r\n" .
'Reply-To: info@x-tension.nl' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $subject, $message, $headers)) {
echo 'Successfully send an email to: '.$firstname.' '.$lastname.' <'.$email.'><br/>';
} else {
if ((trim($email)) == "") {
echo "Please fill out e-mail address and 'save profile' first";
} else {
echo 'error in mail script';
}
}
输入姓名和电子邮件地址的页面将编码设置为 UTF-8。数据库的编码设置为 UTF-8。如您所见,电子邮件的标题设置为 UTF-8。
我已经尝试使用 htmlentities 选项,同时保存名称和不保存名称。我在检索名称时使用 html_entity_decode 选项进行了尝试,但没有。
该名称也在电子邮件的 HTML 正文中,并且在那里正确显示,但 $to 变量中的名字和姓氏在电子邮件未到达时要么不出现并且电子邮件到达,要么可能出现。
非常感谢任何帮助。
马林