10

構築中のサイトからメールを送信しようとしていますが、yahoo の迷惑メール フォルダに入っています。資格情報を送信するのは電子メールです。それを合法化するにはどうすればよいですか?

$header = "From: site <sales@site.com>\r\n";
$header .= "To: $name <$email>\r\n";
$header .= "Subject: $subject\r\n";
$header .= "Reply-To: site <sales@site.com>" . "\r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);
4

9 に答える 9

10
  • メールで HTML を使用しないでください。
  • マシンの実際のホスト名を指す (および前方参照に一致する) 静的 IP と逆引き DNS (PTR) を使用して、正当なメール サーバー経由で送信します。
  • Message-ID を含めます (または、ローカルメーラーが追加してくれることを確認してください)。
  • SpamAssassinを介して電子メールを実行し、一致するスコアの低いルールを確認します。それらを一致させることは避けてください。
  • DomainKeys Identified Mailを使用して、メッセージにデジタル署名します。
于 2008-10-02T06:05:42.920 に答える
4

Yahoo! から次のことを試してみましたが、成功しました。Web ホスティング アカウント:

$email = "me@site.com";
$subject = "簡単なテスト";
$body = "簡単なテスト";
$header = "差出人: サイト \r\n";
$header .= "To: $name \r\n";
$header .= "件名: $subject\r\n";
$header .= "返信先: サイト" . "\r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'コンテンツタイプ: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
メール($email,$subject,$body,$header);

ただし、ヘッダーに重複がある場合は、次のことだけを行う必要があります。

$email = "me@site.com";
$subject = "簡単なテスト";
$body = "簡単なテスト";
$header = "差出人: サイト \r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'コンテンツタイプ: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
メール($email,$subject,$body,$header);
于 2008-10-02T06:19:31.203 に答える
2

Ted Percivalの提案に加えて、ヘッダーを手動で作成するのではなく、PHPMailerを使用して電子メールを作成してみることができます。私はこのクラスを広範囲に使用しており、Yahooや他の誰かによってスパムとして拒否された電子メールに問題はありませんでした。

于 2008-10-02T10:47:38.983 に答える
2

「sendmail」(PHP の mail() 関数の下にある) に追加のパラメータが必要になる可能性もあります。リターン ヘッダー (Return-Path など) が設定どおりに設定されていないという問題がある場合は、5 番目のmail() パラメータを使用する必要がある場合があります。例:

mail('recipient@domain.com', 'Subject', $mail_body, $headers, " -f sender@domain.com");

本物の普通の sendmail にはこれに問題があるかもしれないというさらなる証拠があります! うまくいけば、ターゲット サーバーで PHP の基本的な mail() サポートとして「postfix」を使用できます。

于 2010-02-03T19:15:16.473 に答える
1

Tedの提案は、Timの提案と同様に優れていますが、Yahoo / Hotmail / etcに確実に電子メールを送信できる唯一の方法は、PEAR電子メールクラスを使用することです。それらを試してみてください(サーバーに問題がないと仮定して)私はそれが機能することをほぼ保証できます。

于 2008-10-02T06:48:45.830 に答える
1

テッドとティムは優れた提案をしています。Shabbyrobeもそうです。PHPMailer を使用しており、スパム フィルターに問題はありません。

注意すべきことの 1 つは、MIME 形式を使用している場合、多くのスパム フィルターは、テキスト バージョンがないことを考慮に入れることです。すべてのヘッダーとテキスト バージョンを自分で追加することも、PHPMailer または PEAR メール ライブラリに任せることもできます。テキスト版は役立つ場合もあれば、そうでない場合もありますが、良い習慣であり、ユーザー フレンドリーです。

あなたのコードサンプルは単なるサンプルであることは理解していますが、言う価値があります。ユーザーが提供したデータをメールヘッダーにドロップしないでください。期待どおりのデータであることを確認してください。php メール スクリプトをオープン リレーに変えるのは簡単なことですが、誰もそれを望んでいません。

于 2008-10-03T00:10:56.307 に答える
1

Ted Percival の提案に加えて、電子メールの送信元 IP アドレスが、site.comのSPF レコードに従って電子メールの正当な送信元であることを確認してください。site.com に SPF レコードがない場合は、1 つ追加すると (もちろん、問題の IP アドレスが許可されます)、電子メールがスパム フィルターを通過するのに役立つ場合があります。

メールでどうしても HTML を使用する必要がある場合は、プレーン テキスト バージョンも含めるようにしてください。「text/html」の代わりに「multipart/alternative」のコンテンツ タイプを使用します。

于 2008-10-02T06:14:20.297 に答える
0

電子メール形式については、rfc 822 および rfc 2045 を確認してください。Python の Email クラスは本当に使いやすいと思います。php の PEAR も同じことをしていると思います (以前のメールによると)。また、ヘッダーと本文は「\r\n\r\n」で区切られています。コードが自動的に挿入するかどうかはわかりませんが、ヘッダーに追加してみてください。

DK/SPF が必要になるとは思いません (DK/SPF をサポートしていない Web サーバーがたくさんあるため)。ブロックされる原因となる可能性のある要因がたくさんある可能性があります(少なくとも10Kの異なる基準と方法.. p0f、グレーリスト、グレーリスト、ブラックリストなど)。メールが適切にフォーマットされていることを確認してください (これは大きな違いになります)。完全なヘッダーを生成するライブラリを調べてください。そうすれば、間違いを犯す可能性が最小限になります。

于 2008-10-02T07:34:26.047 に答える
0

SPF レコードの追加は非常に簡単です。試してみてください。

これはdreamhostとgooglemail用です ウェブサーバーのIPアドレスも広告する必要があります(私の場合、googlemailの前の行) 最後の行は、サーバーにソフトリジェクトを行うように指示します(スパムとしてマークしますが、削除しないでください) 私は使用しています「-」(削除)の代わりにそれを使用してください。Googleのドキュメントにそう書かれているためです:-)

TXT レコードです v=spf1 ip4:64.111.100.0/24 ip4:66.33.201.0/24 ip4:66.33.216.0/24 ip4:208.97.132.0/24 ip4:208.97.187.0/24 ip4:208.113.2004.0/24 ip :208.113.244.0/24 ip4:208.97.132.74 ip4:67.205.36.71 include:aspmx.googlemail.com mx ~all

それが役に立てば幸い

于 2009-07-02T07:38:19.070 に答える