我有以下问题。我有一个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");
}
除非有特殊字符,否则效果很好。当有特殊字符时,它根本不发送电子邮件而没有任何警告。
由于
答案 0 :(得分:0)
在允许发送之前,您是否尝试过清洁输入?
您是否允许在不转义SQL语句的情况下输入撇号?还要检查服务器上的邮件日志 - 这应该可以更好地提示底层问题。
谢谢, // P