0

メール関数から $headers を削除すると、テーブルを表示する代わりにメールに含まれるすべての html コードを含む $message が送信されますが、メール関数に $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);

「タイトル」に異論はありません。

マニュアルから:

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $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 に答える