web-dev-qa-db-ja.com

PHPメール機能を使用して、送信メールを迷惑メールとして処理しないようにする

私はPHPメールを送信するためのスクリプトを書きました。

私のスクリプトは次のようなものです:

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

// Email Variables
$toUser  = "[email protected]"; // recipient
$subject = "testing"; // subject
$body    = "<html><body><p>
             Example of including an image via html \<img\> tag:
             <br>
             <img src='../images/profile.jpg'>
             <br>
             My new picture
             <br></p></body></html>"; // content

if (mail($toUser,$subject,$body,$headers)) {
    echo "sent";
} else {
    echo "failed";
}

もちろん、私は送信者と受信者に有効なメールアドレスを使用しています。メールは届きましたが、迷惑メールです。それで私はグーグル研究に行きました。 「ヘッダー」スクリプトの問題が原因ですか?そうでない場合、スクリプトがジャンクメールを送信する原因は何ですか?解決策はありますか?

14
Peter

これを試してください:

$headers ="From:<$from>\n";
$headers.="MIME-Version: 1.0\n";
$headers.="Content-type: text/html; charset=iso 8859-1";

mail($to,$subject,$body,$headers,"-f$from");
12
Anju

おそらく問題は、yahooが domainkeys 検証を使用することです。これは、メールが実際にyahooのサーバーから送信されていない場合、アプリケーションで失敗する可能性があります。

8
Rad

一度同様の問題が発生したとき、ヘッダーを調べたところ、私のホストがSpamAssassinを使用していることがわかりました。それで、私は「SpamAssassinスコア」を探して、メールを正しく(そして正しく)作成する方法に関する多数の情報を見つけました。

例: SpamAssassinスコアリスト

7
markus

1。メール内容を確認する

他の人が示唆したように、あなたのメールはスパムのように見えるので、おそらくスパムとしてマークされています。

あなたが投稿したスクリプトが実際にテストしているものかどうかはわかりません。

実際のメール本文とヘッダーがある場合、SpamAssassinの標準インストールを介してこのメ​​ッセージを実行すると、4.9のスパムスコアが得られます。

 X-Spam-Status:いいえ、スコア= 4.9必須= 5.0テスト= BAYES_50、HTML_IMAGE_ONLY_04、
 HTML_MESSAGE、MIME_HTML_ONLY、NO_DNS_FOR_FROM、NO_RELAYS autolearn = no 
 version = 3.2.5 

電子メールの本文はHTMLのみであるため、ほとんどのスパム対策ソリューションで容疑者と扱われる可能性が高くなります。

2。メールサーバーのIP

確認する価値のあるもう1つの側面は、メールサーバーのIPアドレスです。動的IPアドレスから送信されたメールは、潜在的にスパムと見なされます。

3。ブロックリスト

また、IPアドレスがいずれかのブロックリストに記載されているかどうかも確認してください。まず、IPアドレスを http://www.spamhaus.org/lookup.lasso で確認してください。

5
StackKrish

mxtoolbox.com を使用して、ブラックリストに登録するサーバーのIPを確認します。また、このWebサイトは、電子メールに関連するいくつかのチェックに役立ちます。

もちろん、スパムフィルター内で実行されるチェックの長いリストがあります。既に提案したように、スパムメールのスパムフィルター評価の詳細については、メールヘッダーを確認してください。

お役に立てば幸いです。

3
Gerhard

私は同じ問題を抱えていました:

問題は、「From:」部分の前にcontent-typeを指定すると、メールがスパムとして送信されることです。

ただし、コンテンツ部分の前に「From:」を指定すると、通常のメールとして送信され、笑顔で好奇心をそそられます。

2
Masti Khan
                   **This Works Perfectly fine for me**     
                        $to="[email protected]";
                        $subject="This is Your Message";
                        $from = 'Sender <[email protected]>';
                        $body='Hi '.$name.', <br/><br>Now You can See Yor main in inbox';
                        $headers = "From: " .($from) . "\r\n";
                        $headers .= "Reply-To: ".($from) . "\r\n";
                        $headers .= "Return-Path: ".($from) . "\r\n";;
                        $headers .= "MIME-Version: 1.0\r\n";
                        $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
                        $headers .= "X-Priority: 3\r\n";
                        $headers .= "X-Mailer: PHP". phpversion() ."\r\n";
                        mail($to,$subject,$body,$headers);
2
Jismon Thomas

Schnalleが言ったように、1つの問題は確かに、メールの送信に使用するSMTPサーバーとFromとして指定するSMTPサーバーが異なることです。

したがって、yahooサーバーを使用して、smtpで接続する電子メール(smtpリモート接続を許可するかどうかを確認しますが、許可するかどうかを確認)を送信できます。これにより、1つの問題が解決します。

もう1つは、代替プレーンテキストコンテンツのないhtmlコンテンツですが、これはそれほど重要ではありません。

私はあなたに phpMailer 、Eメールを送信するための無料のオープンソースphpクラス、簡単に使用することをお勧めします(私はそれを使用しますイベントGmailサーバー経由でメールを送信します)

1
Strae

ウェブサイトのドメインがmydomain.comの場合は、Fromヘッダーで[email protected]を使用してください

1
Ross
  1. サーバー上で、SPF(Sender Policy Framework、Google for SPFレコード)レコードをソートしてみてください。
  2. サーバー/ドメインの既存のアカウントから電子メールを送信していることを確認してください。
  3. ヘッダーに返信先アドレスがあることを確認してください。

これらは、試すことができる基本的なものです。

1
Technorat

Content-type: text/htmlを削除し、$headers .= "X-Priority: 2\nX-MSmail-Priority: high";を追加してスパムを削除します。この方法は試され、テストされています。

1
Sashi

問題は、メールの送信元のサーバーがyahooサーバーではないことです。ほとんどのスパムフィルターは、それらが一致するかどうかをチェックします。なぜあなたはbill.gates AT Microsoft.comまたはあなた自身のメールアドレスからスパムを得るのか疑問に思いましたか?

0
stefs

次の2つのソリューションがあります。

  • [email protected]資格情報を使用してYahooのSMTPを使用し、abc @ yahoo.comからメールを送信します。
  • 独自のドメインで他のfromを使用します。
0
vartec

ここで作成したメールクラスとテストファイルを試すことができます。ファイルをテストしました。hotmailとgmailに別のメール名でメールを送信できます。電子メールがジャンクとしてマークされる主な理由は、構造(ヘッダーとメッセージの両方)が正しく行われていないためです。ほとんどの場合、問題の原因はラインフィードです。

添付ファイル付きのメールをGmailに送信できます。ただし、添付ファイルはhotmailでは機能しません。これが役立つことを願って=)

ファイルを確認できます here ..

0
mike