PHPMailer 和主题中的特定字符(UTF-8?)
PHPMailer and specific characters in subject (UTF-8?)
我正在尝试使用 PHPMailer 发送电子邮件。除了主题中的 UTF-8 编码外,一切正常。
我的邮件客户端中仍然收到 html 代码(commancé,必须是“commancé”)。
$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
try {
//Server settings
//Recipients
$mail->setFrom('kevin@expl.com', 'Kevin de Exple');
$mail->addAddress($email, $name); // Add a recipient
// Content
$mail->isHTML(true); // Set email format to HTML
$subject = 'RE: La plantation de votre arbre a commancé';
$sub = '=?UTF-8?B?'.base64_encode($subject).'?=';
$mail->Subject = $sub;
...
你能帮帮我吗?我尝试了网上的一切:)
祝你有个愉快的一天!
这样做
function correct_encoding($text) {
$current_encoding = mb_detect_encoding($text, 'auto');
$text = iconv($current_encoding, 'UTF-8', $text);
return $text;
}
$mail = new PHPMailer(true);
$mail->CharSet = 'utf-8';///<-- use lowercase
//$mail->Encoding = 'base64';//usually it is not necessary
try {
//Server settings
//Recipients
$mail->setFrom('kevin@expl.com', 'Kevin de Exple');
$mail->addAddress($email, $name); // Add a recipient
// Content
$mail->isHTML(true); // Set email format to HTML
$subject = 'RE: La plantation de votre arbre a commancé';
//$sub = '=?UTF-8?B?'.base64_encode($subject).'?=';
$mail->Subject = correct_encoding($subject);
我不明白你为什么要用艰难的方式做事!第一步是将 CharSet
属性 设置为 UTF-8
,您已经完成了。对于这个主题,你有这个:
$subject = 'RE: La plantation de votre arbre a commancé';
$sub = '=?UTF-8?B?'.base64_encode($subject).'?=';
$mail->Subject = $sub;
里面有很多不必要的东西。您需要做的就是:
$mail->Subject = 'RE: La plantation de votre arbre a commancé';
PHPMailer 会为您处理所有编码。此处唯一要注意的是确保您在编辑器中实际使用的是 UTF-8。如果您使用的是 ISO-8859-1 或类似标准,它将无法工作——尽管它在您的代码中看起来是一样的。
至于拼写错误,我将不得不把它们留给你...
我正在尝试使用 PHPMailer 发送电子邮件。除了主题中的 UTF-8 编码外,一切正常。 我的邮件客户端中仍然收到 html 代码(commancé,必须是“commancé”)。
$mail = new PHPMailer(true);
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
try {
//Server settings
//Recipients
$mail->setFrom('kevin@expl.com', 'Kevin de Exple');
$mail->addAddress($email, $name); // Add a recipient
// Content
$mail->isHTML(true); // Set email format to HTML
$subject = 'RE: La plantation de votre arbre a commancé';
$sub = '=?UTF-8?B?'.base64_encode($subject).'?=';
$mail->Subject = $sub;
...
你能帮帮我吗?我尝试了网上的一切:)
祝你有个愉快的一天!
这样做
function correct_encoding($text) {
$current_encoding = mb_detect_encoding($text, 'auto');
$text = iconv($current_encoding, 'UTF-8', $text);
return $text;
}
$mail = new PHPMailer(true);
$mail->CharSet = 'utf-8';///<-- use lowercase
//$mail->Encoding = 'base64';//usually it is not necessary
try {
//Server settings
//Recipients
$mail->setFrom('kevin@expl.com', 'Kevin de Exple');
$mail->addAddress($email, $name); // Add a recipient
// Content
$mail->isHTML(true); // Set email format to HTML
$subject = 'RE: La plantation de votre arbre a commancé';
//$sub = '=?UTF-8?B?'.base64_encode($subject).'?=';
$mail->Subject = correct_encoding($subject);
我不明白你为什么要用艰难的方式做事!第一步是将 CharSet
属性 设置为 UTF-8
,您已经完成了。对于这个主题,你有这个:
$subject = 'RE: La plantation de votre arbre a commancé';
$sub = '=?UTF-8?B?'.base64_encode($subject).'?=';
$mail->Subject = $sub;
里面有很多不必要的东西。您需要做的就是:
$mail->Subject = 'RE: La plantation de votre arbre a commancé';
PHPMailer 会为您处理所有编码。此处唯一要注意的是确保您在编辑器中实际使用的是 UTF-8。如果您使用的是 ISO-8859-1 或类似标准,它将无法工作——尽管它在您的代码中看起来是一样的。
至于拼写错误,我将不得不把它们留给你...