php邮件功能不起作用

时间:2013-07-15 16:31:00

标签: php email

如果我从邮件功能中删除$ header它的工作,它发送$ message包含在邮件中的所有html代码而不是显示表,但是当我在邮件功能中包含$ headers时,它不会发送邮件。它甚至不显示任何错误。我的code.im是关于在Web服务器上工作的。

<?php

    //Deal with the email

    if(isset($_POST['submit']))
     {


    $to = 'myemail@example.com';
            $title = 'New Enquiry || example.com';

    $subject = $_POST['subject'];
            $message = $_POST['message'];
    $name = $_POST['name'];
    $email = $_POST['email'];

     }

    $headers .= "From: " . strip_tags($email) . "\r\n";
    $headers .= 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";


    $msg = '<html><head><body><b>'.$title.'</b>

            <br>

            <table bgcolor=#CCCCCC>
            <tr>
            <td> Subject : </td>
            <td> '.$subject.'</td></tr>'

            .'<tr> <td> Contact person: </td><td>'.$name.'</td></tr>'
            .'<tr> <td> E-mail:</td><td> '.$email.'</td></tr>'
            .'<tr><td> Message : </td><td>'.$message.' </td></tr></table></body></head></html>';


     mail($to, $title, $subject, $msg, $headers);

     header( "refresh:1;url=contact-us-ok.html" );          


?>

2 个答案:

答案 0 :(得分:1)

您对mail()的参数顺序错误。它应该是:

mail($to, $subject, $msg, $headers);

“标题”没有争议。

来自Manual

  

bool mail(string $ to,string $ subject,string $ message [,string $ additional_headers [,string $ additional_parameters]])

旁注:

  • strip_tags()不足以阻止标头注入。我建议您使用您自己的From地址的硬编码电子邮件,而不是用户输入,否则您可能会得到不一致的垃圾邮件过滤器结果,而您显然必须实施一些验证以防止注入漏洞。

答案 1 :(得分:0)

邮件功能定义为:

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

来自:http://php.net/manual/en/function.mail.php

您正在发送:

mail($to, $title, $subject, $msg, $headers);

看起来你不应该发送$ title变量。