私は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";
}
もちろん、私は送信者と受信者に有効なメールアドレスを使用しています。メールは届きましたが、迷惑メールです。それで私はグーグル研究に行きました。 「ヘッダー」スクリプトの問題が原因ですか?そうでない場合、スクリプトがジャンクメールを送信する原因は何ですか?解決策はありますか?
これを試してください:
$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");
おそらく問題は、yahooが domainkeys 検証を使用することです。これは、メールが実際にyahooのサーバーから送信されていない場合、アプリケーションで失敗する可能性があります。
一度同様の問題が発生したとき、ヘッダーを調べたところ、私のホストがSpamAssassinを使用していることがわかりました。それで、私は「SpamAssassinスコア」を探して、メールを正しく(そして正しく)作成する方法に関する多数の情報を見つけました。
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 で確認してください。
mxtoolbox.com を使用して、ブラックリストに登録するサーバーのIPを確認します。また、このWebサイトは、電子メールに関連するいくつかのチェックに役立ちます。
もちろん、スパムフィルター内で実行されるチェックの長いリストがあります。既に提案したように、スパムメールのスパムフィルター評価の詳細については、メールヘッダーを確認してください。
お役に立てば幸いです。
私は同じ問題を抱えていました:
問題は、「From:」部分の前にcontent-typeを指定すると、メールがスパムとして送信されることです。
ただし、コンテンツ部分の前に「From:」を指定すると、通常のメールとして送信され、笑顔で好奇心をそそられます。
**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);
Schnalleが言ったように、1つの問題は確かに、メールの送信に使用するSMTPサーバーとFromとして指定するSMTPサーバーが異なることです。
したがって、yahooサーバーを使用して、smtpで接続する電子メール(smtpリモート接続を許可するかどうかを確認しますが、許可するかどうかを確認)を送信できます。これにより、1つの問題が解決します。
もう1つは、代替プレーンテキストコンテンツのないhtmlコンテンツですが、これはそれほど重要ではありません。
私はあなたに phpMailer 、Eメールを送信するための無料のオープンソースphpクラス、簡単に使用することをお勧めします(私はそれを使用しますイベントGmailサーバー経由でメールを送信します)
ウェブサイトのドメインがmydomain.comの場合は、Fromヘッダーで[email protected]を使用してください
これらは、試すことができる基本的なものです。
Content-type: text/html
を削除し、$headers .= "X-Priority: 2\nX-MSmail-Priority: high";
を追加してスパムを削除します。この方法は試され、テストされています。
問題は、メールの送信元のサーバーがyahooサーバーではないことです。ほとんどのスパムフィルターは、それらが一致するかどうかをチェックします。なぜあなたはbill.gates AT Microsoft.comまたはあなた自身のメールアドレスからスパムを得るのか疑問に思いましたか?
次の2つのソリューションがあります。
ここで作成したメールクラスとテストファイルを試すことができます。ファイルをテストしました。hotmailとgmailに別のメール名でメールを送信できます。電子メールがジャンクとしてマークされる主な理由は、構造(ヘッダーとメッセージの両方)が正しく行われていないためです。ほとんどの場合、問題の原因はラインフィードです。
添付ファイル付きのメールをGmailに送信できます。ただし、添付ファイルはhotmailでは機能しません。これが役立つことを願って=)
ファイルを確認できます here ..