PHP Pear Mail不发送带有特殊字符的电子邮件

时间:2014-07-04 15:31:13

标签: php email special-characters pear

我有以下问题。我有一个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");

  }

除非有特殊字符,否则效果很好。当有特殊字符时,它根本不发送电子邮件而没有任何警告。

由于

1 个答案:

答案 0 :(得分:0)

在允许发送之前,您是否尝试过清洁输入?

您是否允许在不转义SQL语句的情况下输入撇号?还要检查服务器上的邮件日志 - 这应该可以更好地提示底层问题。

谢谢, // P