奇怪的问题!编码字符仅适用于正文

时间:2012-03-15 11:40:34

标签: php sendmail

如何将字符集设置为UTF-8,影响带附件的邮件功能主题, 我正在接受巨大的头痛,

我用它来发送法语内容(主题+正文)+附件。 身体上的人物都很好,并且显示出很好的重音,但主题上的重音字符只是一团糟。

我通过POST获取数据(附加文件除外,已经在服务器上定义了路径)。

$email_from = "$Emp->Email";
$email_subject = $_POST['email_subject_posted'];
$email_message = "Nom: $Emp->Nom<br>";
$email_message .= "Prénom: $Emp->Prenom<br>";   
$email_message .= "Tel: $Emp->Mobile<br>";
$email_message .= "Email: $Emp->Email<br><br>";

$email_message .= stripslashes(strip_tags($lettre));
$email_message .= "<br><br>";
$email_message .= "Candidature envoyée avec mon compte Example.<br>";
$email_message .= "http://www.example.org<br>";
$email_message .= "1er Site de l’emploi en Algérie.";

$email_to = "$email_candidature";
$headers = "From: ".$email_from;
$file = fopen($CVfile,'rb');
$data = fread($file,filesize($CVfile));
fclose($file);
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";
$email_message .= "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type:text/html; charset=\"utf-8\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$email_message .= "\n\n";

$data = chunk_split(base64_encode($data));

$email_message .= "--{$mime_boundary}\n" .
"Content-Type: {$CVfile_type};\n" .
" name=\"{$CVfile_name}\"\n" .
//"Content-Disposition: attachment;\n" .
//" filename=\"{$CVfile_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data .= "\n\n" .
"--{$mime_boundary}--\n";

$ok = @mail($email_to, $email_subject, $email_message, $headers);

任何输入都太受欢迎了。

2 个答案:

答案 0 :(得分:0)

当我的PHP文件编码与消息编码不相似时,我遇到了这样的问题。检查PHP文件的编码。

答案 1 :(得分:0)

在mail()函数

中围绕主题使用类似的东西
'=?UTF-8?B?'.base64_encode($email_subject).'?='

所以看起来像

@mail($email_to, '=?UTF-8?B?'.base64_encode($email_subject).'?=', $email_message, $headers, '-f'.$email_from);