【发布时间】:2014-05-20 08:45:53
【问题描述】:
我已经找到并尝试了其他有关特殊字符的 utf 编码和其他相关问题的问题中给出的各种解决方案,但没有任何成功。
我有一个 html 联系表单,它使用 PEAR Mail mime 使用简单的 php 脚本将信息发送到我的邮件地址。我可以毫无问题地从本地主机上的测试站点发送包含特殊字符的信息,但在我上传到我的服务器之后就不行了。
例如消息: 测试特殊字符:é è ç à ô
从服务器发送后变为: 测试特殊字符: é è ç à ô
我猜这是我的网络服务器的编码问题,但我有点卡在如何解决问题上。
包含表单的文件中的元标记设置为:
<meta charset="utf-8">
并指定表格接受charset utf-8:
<form name="contact" method="post" action="assets/send_form.php" accept-charset="UTF-8">
我也尝试过从 php 文件发送内容:
header("Content-Type: text/html; charset= UTF-8");
以及使用 'Content-Type' = 'text/html; 为消息创建 $headers;字符集=“UTF-8”。
我脚本中的相关php代码:
//This section creates the email headers
$headerss=array();
$headerss['From']= $from_address;
$headerss['To']= $siteEmail;
$headerss['Subject']= $email_subject;
$headerss['Return-Path']= $contactEmail;
$headerss['Date']= date("r");
$headerss['Content-Type'] = 'text/html; charset="UTF-8"';
// This section creates the smtp inputs
$auth = array('host' => $host, 'port' => $port, 'auth' => true, 'username' => $username, 'password' => $password);
// create new Mail_mime instance, set utf-8 charset
$mail = new Mail_mime();
$mail -> setHTMLBody($email_message);
//CHECK THIS OUT FOR UTF-8 *****************************
$mimeparams=array();
$mimeparams['text_encoding']="7bit";
$mimeparams['text_charset']="UTF-8";
$mimeparams['html_charset']="UTF-8";
$mimeparams['head_charset']="UTF-8";
$mimeparams['eol']= "\n" ;
$body = $mail->get($mimeparams);
$headers = $mail->headers($headerss);
// This section send the email
$smtp = Mail::factory('smtp', $auth);
$sendmail = $smtp->send($siteEmail, $headers, $body);
任何帮助将不胜感激。谢谢。
【问题讨论】:
-
你能验证
$email_message的编码是UTF-8吗? -
@Doge $email_message 是由来自联系人表单输入的 HTTP POST 请求生成的,其中“接受字符集”设置为“UTF-8”。然后将输入添加一些格式以创建电子邮件消息:例如。 $email_message .= "发件人:".$contactName."
";
标签: php utf-8 character-encoding pear contact-form