13

メールを送信するための PHP スクリプトを作成しました。

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

$headers =  'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: abc@yahoo.com' . "\r\n";

// Email Variables
$toUser  = "someone@yahoo.com"; // 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";
}

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

4

14 に答える 14

13

これを試してください:

$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");
于 2012-08-22T06:57:18.990 に答える
8

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

于 2009-04-14T09:06:02.390 に答える
7

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

例: SpamAssassin スコア リスト

于 2009-04-14T09:10:02.087 に答える
5

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=いいえ
        バージョン=3.2.5

電子メールの本文には HTML のみが含まれているため、ほとんどのスパム対策ソリューションで疑わしいと処理される可能性が高くなります。

2.メールサーバーのIP

チェックする価値のあるもう 1 つの側面は、メール サーバーの IP アドレスです。動的 IP アドレスから発信されたメールは、スパムと見なされる可能性があります。

3. ブロックリスト

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

于 2009-04-14T15:31:47.317 に答える
3

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

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

それが役立つことを願っています!

于 2013-07-16T14:05:04.190 に答える
2

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

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

しかし、内容部分の前に「From:」を指定すると、通常のメールと同じように来て、思わず笑ってしまいます。

于 2013-03-04T12:30:25.860 に答える
2
                   **This Works Perfectly fine for me**     
                        $to="reciever@reciever.com";
                        $subject="This is Your Message";
                        $from = 'Sender <noreply@sender.com>';
                        $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);
于 2014-11-07T06:37:36.677 に答える
1
  1. サーバーで、SPF (Sender Policy Framework、Google for SPF レコード) レコードを並べ替えてみてください。
  2. サーバー/ドメインの既存のアカウントから電子メールを送信していることを確認してください。
  3. ヘッダーに返信先アドレスがあることを確認してください。

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

于 2009-06-05T13:27:41.880 に答える
1

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

于 2010-07-22T20:50:07.213 に答える
1

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

于 2013-03-27T21:54:49.133 に答える
1

schnalle が言ったように、1 つの問題は確かに、電子メールの送信に使用する smtp サーバーと From として指定するサーバーが異なることです.. From のドメインは、実行しているサーバーと同じである必要があります。

したがって、yahooサーバーを使用してメールを送信できます(smtpリモート接続が許可されているかどうかを確認しますが、許可されていると思います)smtpで接続すると、1つの問題が解決します.

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

メールを送信するための無料でオープンソースの php クラスであるphpMailerをお勧めします。

于 2009-04-14T09:22:55.893 に答える
0

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

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

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

于 2011-01-05T23:16:33.520 に答える
0

2 つの解決策があります。

  • abc@yahoo.com 資格情報を使用して Yahoo の SMTP を使用し、abc@yahoo.com からメールを送信します。
  • 独自のドメインで、他のものを使用します。
于 2009-04-14T09:32:14.840 に答える
0

問題は、メールの送信元のサーバーが yahoo サーバーではないことです。ほとんどのスパム フィルターは一致するかどうかをチェックします。bill.gates AT microsoft.com や自分のメール アドレスからスパムが届く理由を考えたことはありますか?

于 2009-04-14T09:11:09.510 に答える