0

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

<?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" );          


?>
4

2 回答 2

1

你的论点顺序mail()是错误的。它应该是:

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

没有关于“标题”的论据。

手册

布尔邮件(字符串 $to ,字符串 $subject ,字符串 $message [,字符串 $additional_headers [,字符串 $additional_parameters ]])

边注:

  • strip_tags()不足以防止标头注入。我建议使用您自己的硬编码电子邮件作为From地址,而不是用户输入,因为否则您可能会得到不一致的垃圾邮件过滤器结果,并且您显然必须实施一些验证以防止注入漏洞。
于 2013-07-15T16:35:32.977 回答
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 变量时发送。

于 2013-07-15T16:35:57.663 回答