使用ob_start()无法使用mail()和header()php修改标头信息

时间:2011-12-30 09:13:09

标签: php html email header

我相信你们都知道这个错误:

Warning: Cannot modify header information - headers already sent by (output started at /homepages/4/d374499247/htdocs/wp-content/themes/tyler/mail.php:1) in /homepages/4/d374499247/htdocs/wp-content/themes/tyler/mail.php on line 34

这是代码:

if (strpos($email,'@') !== false)  {
    ob_start();
    mail($to,$subject,$message,$headers);
    header("Location: thankyou.html");
    ob_end_flush(); }

有人可以在这里提供任何帮助吗?我只是希望它邮寄()信息,然后转到位置页面

编辑:这是整个代码..

<?php
$to = 'myemail@gmail.com';
$subject = 'בקשת הצטרפות לרשימת תפוצה';
$message =
'בקשת הצטרפות לרשימת תפוצה' . "\n\n" .
'שם: ' . $_REQUEST['name'] . "\n\n" .
'דואר אלקטרוני: ' . $_REQUEST['email'];
$email = $_REQUEST['email'];
$headers = 'From: ' . $email . "\r\n" .
            'Reply-To: ' . $email . "\r\n" .
          'X-Mailer: PHP/' . phpversion();
$headers .= "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/plain; charset=ISO-8859-1";
// server-validation
if (strpos($email,'@') !== false){
    mail($to,$subject,$message,$headers);
    header("Location: thankyou.html");
} else {
    echo "<p class='error'>כתובת הדוא'ל שגויה.</p>";
}
?>

3 个答案:

答案 0 :(得分:5)

检查您的网页编码。可能是UTF-8 +(UTF-8 signature

如果没有,则需要检查空格。

答案 1 :(得分:2)

此错误是由于您在尝试发送标头时已将数据发送到客户端(应首先发送)。

最有可能的是,您的文件开头有空格。根据您当前的代码示例,很难确定完全导致问题的原因,但基于错误显示它位于第1行的事实你的文件,我会说它的空白。

答案 2 :(得分:1)

很可能在你的PHP标签之前有某种空格(就像第一行的输出一样)。

header()之前不能有任何输出,甚至没有空格或换行符。