我有以下问题。我有一个在线申请表在HTML张贴到一个php文件。php文件应该通过电子邮件发送内容。它的工作完美,除了当客户端的名字张贴有特殊字符,如ü等。它不会在表单提交时给出任何错误,它只是不发送电子邮件。
这是我的代码:
$host = "192.168.10.14";
$username = "exxxx@xxx.com";
$password = "xxxxx";
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = new Mail_mime(array("text_charset" => "utf-8",
"html_charset" => "utf-8",
"eol" => "'n"));
foreach ($headers as $name => $value){
$headers[$name] = $mail->encodeHeader($name, $value, "utf-8",
"quoted-printable");
}
// also encode to value
$to = $mail->encodeHeader("to", $to, "utf-8", "quoted-printable");
// fetch message
$msgDone = $mail->get();
// let Mail_Mime finish the headers (adds e.g. MIME info)
$headers_done = $mail->headers($headers);
// send the email
$smtp = Mail::factory('smtp',
array ('host' => $host,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail2)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
header("Refresh: 0;url=OK.html");
}
除非有特殊字符,否则效果很好。当有特殊字符时,它不发送任何警告。
谢谢
您是否尝试过在发送之前清理您的输入?
你会允许在SQL语句中输入撇号而不转义吗?还要检查服务器上的邮件日志——这应该能更好地提示潜在的问题。
谢谢,//P