0

お問い合わせフォームと php の mail() 関数に問題があります。何らかの理由で、古い恐ろしい hotmail を除くすべてのメール アドレス (@gmail、@yahoo、@outlook、さらには @facebook!) に対して機能します。私のコードに何かが欠けているところに興味があります。メール サーバーを確認しましたが、hotmail アドレスに問題はないようです。

電子メールは、スパム/ジャンク フォルダーに配信されません (hotmail には到達しません)。オンラインで調べたところ、スパム フィルターに引っかからないようにヘッダーを変更するようにという人もいました。これへのポインタはありますか?

PHP コード

<?php
    header('Content-Type: application/json charset=utf-8');
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'companyname@mail.com'; 
    $to = 'myemail@hotmail.com'; 
    $subject = $name . ' has sent you a message';
    $human = $_POST['antispam'];

    $body = "From: $name\n E-Mail: $email\n Message:\n $message";

    if (isset($_POST['name']) && $human == '4') {                
        if (mail ($to, $subject, $body, $from)) { 
            echo '{"status":"1"}';
        } else { 
            echo '{"status":"0"}';
        } 
    } 
    else 
    {
        echo '{"status":"2"}';
    }
?>

if ステートメントは、すべてのフォームが有効であり、スパム対策 (2+2) が正しく入力されているかどうかをチェックするだけです。この部分では何もする必要はありません。私が推測する問題は、ヘッダーのどこかにあります

4

1 に答える 1

0

これらの変更を使用してみてください。

<?php
    header('Content-Type: application/json; charset=utf-8');
    ...
    $from = 'companyname@mail.com'; 
    $headers = 'From: '. $from. "\r\n";
    ...
        if (mail ($to, $subject, $body, $headers)) { 
    ...
?>

メール関数の 4 番目のパラメーターは、アドレスからだけでなく、additional_headers であることが期待されます。

于 2012-08-11T14:59:47.573 に答える