web-dev-qa-db-ja.com

phpメール機能を介して電子メールを送信すると、スパムになります

受信トレイ(Gmailアカウント)にメールを送信する際に問題に直面していますが、毎回スパムフォルダーに移動します。これがコードスニペットです

     //$ticketDetail is array which contain required information to send.
       sendOwnershipEmail('[email protected]', $ticketDetail);

       function sendOwnershipEmail($email, $ticketDetail) {
            $param = new stdClass();


$param->content = "<div>
    <div><b>".$ticketDetail[0]['ticket_number']."</b></div><br/>
    <div><img src='".$ticketDetail[0]['image_path']."'/></div><br/>
    <div>Ticket with ticket number ".$ticketDetail[0]['ticket_number']." has been requested for tranfer from <div/>
    <div>".$ticketDetail[0]['oldDepartment']." to ".$ticketDetail[0]['newDepartment']." Department <div/>
  </div>";

            $param->sendTo = $email;
            $param->subject = "Request for Department transfer";

        sendMailFunction($param);
    }


    function sendMailFunction($param) {
            $to = $param->sendTo;
            $subject = $param->subject;
            $headers = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
            $headers .= 'From: [email protected]' . "\r\n";
            $message = "<html><head>" .
                   "<meta http-equiv='Content-Language' content='en-us'>" .
                   "<meta http-equiv='Content-Type' content='text/html; charset=windows-1252'>" .
                   "</head><body>" .$param->content.        
                   "<br><br></body></html>";
          mail($to, $subject, $message, $headers);
    }

そして、ヘッダーをReply-To、Return-Pathなどとして設定するのによく似ていますが、毎回スパムになります。問題を理解してください。

28
Dinesh Nagar

問題は、PHP-Mail機能が適切に構成されたSMTPサーバーを使用していないという単純なものです。

現在、電子メールクライアントとサーバーは、逆DNSルート、グレーリスト、whatevsなどの電子メール送信サーバーに対して大規模なチェックを実行します。このテストはすべて、php mail()関数で失敗します。ダイナミックIPを使用している場合、さらに悪いことになります。

PHPMailer-Classを使用し、適切に構成された専用SMTPサーバー(ローカルサーバーまたはリモートサーバー)と共にsmtp-authを使用するように構成すると、問題はなくなります。

https://github.com/PHPMailer/PHPMailer

26
dognose

ヘッダーをこれに変更してみてください:

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: [email protected]" . "\r\n" .
"Reply-To: [email protected]" . "\r\n" .
"X-Mailer: PHP/" . phpversion();

いくつかの理由で。

  • その1つはReply-Toの必要性であり、

  • 二重引用符の代わりにアポストロフィを使用します。私のフォームの経験におけるこれら2つのことは、通常、メッセージがスパムボックスに表示される原因となります。

$fromを次のように変更することもできます。

$from = "[email protected]";


編集:

私が主題で見つけたこれらのリンクを参照してください https://stackoverflow.com/a/9988544/1415724 および https://stackoverflow.com/a/16717647/1415724https://stackoverflow.com/a/9899837/1415724

https://stackoverflow.com/a/5944155/1415724 および https://stackoverflow.com/a/6532320/1415724

  • ISPのSMTPサーバーを使用してみてください。

    これを使用すると、多くの場合明らかに動作しました:X-MSMail-Priority: High

http://www.webhostingtalk.com/showthread.php?t=931932

」私のホストは、ドメインでDomainKeysとSPFレコードを有効にするのを助けてくれたので、Hotmailアドレスにテストメッセージを送信しても、迷惑メールになりません。これらを有効にするのは本当に簡単でした電子メール認証の下のcPanelの設定。これまで見たことがないとは信じられません。それはphpmailerを使用してSMTP経由で送信する場合にのみ機能します。それ以外の方法ではスパムとしてマークされます。」

PHPmailerはhotmailのスパムにメールを送信します。修正方法 http://Pastebin.com/QdQUrfax

14

独自のメールサーバー経由でこれを送信する場合は、独自のドメインからの電子メールアドレスを含む「送信者」ヘッダーを追加する必要があります。 FROMアドレスはGmailアドレスですが、独自のサーバーから送信されていないため、Gmailはおそらく電子メールをスパムします。

4
Patrick

電子メールで通常行うことは、最終宛先としてスパムフォルダを防止するために、Gmailをsmtpサーバーとして使用するか、または Mandrill をsmtpサーバーとして使用することです。

2
Emile

私が観察したことの1つは、提供しているメールアドレスがドメインの有効なメールアドレスではない可能性が高いことです。 [email protected]など。メールはGoogleドメインに存在する必要があります。自分自身を理解する前に多くの問題がありました...

0
Nazehs