異なるホスト上の smtp サーバーを使用して、またはローカルの smtp サーバーがインストールされている場合、php から電子メールを送信できることはわかっています。私が知りたいのは、ローカルまたはリモートの smtp サーバーなしで php が電子メールを送信できるかどうかです。sendmail プログラムについて聞いたことがありますが、サーバーにメール サーバーがインストールされていなくても機能しますか?
2938 次
1 に答える
2
ある時点で、SMTP サーバーと通信する必要があります。ローカル ホストの SMTP サーバー経由で送信するのが最もクリーンなオプションであり、スパム フィルターを通過する可能性が最も高くなります。
メールサーバーが行うことは非常に複雑です。宛先としてアウトバウンド ホストを使用して、電子メール クライアントから電子メール サーバーに到着する平均的な電子メールを考えてみましょう。
- サーバーはユーザー アカウントをチェックし、有効であることを確認します。
- 電子メールは、受信者ごとに個別に、または 1 つのメッセージとしてキューに入れられます (サーバーによって異なります)。
- サーバーはキュー内の電子メールを検索し、各受信者アドレスを処理します。これには、ターゲット ドメインごとに MX レコードの DNS ルックアップが必要です。
- 電子メール サーバーは MX レコードで指定されたアドレスに接続し、SMTP の場合と同様に電子メールを配信します。
- 成功すると、電子メールはキューから削除されます。失敗すると、電子メールはキューに残り、サーバーは後で再試行するか (指数バックオフ - グレーリストを参照)、後で POP3 経由で電子メールをチェックするときにメール キューに戻されます。
キュー内の次の電子メール サーバーは、最後のサーバーが電子メールを受信して受信者のメールボックスに留まるまで、上記の手順を繰り返します。
PHP 内でそれを行うことは可能ですが、お勧めしません。MX レコードのルックアップは、メール サーバーが許容するあらゆる種類の非準拠のことを行うため、扱いにくい場合があります。さらに、対象の SMTP サーバーに直接接続しようとしているときに、スクリプトがタイムアウトする可能性があります。一部のサーバーは、電子メールを「グレーリスト」に設定するようにも構成されています。つまり、電子メールは最初は拒否されますが、後で受け入れられます (たとえば、30 分は珍しくありません)。平均的な PHP スクリプトでは、そのシナリオを処理できません。
于 2013-01-08T14:44:33.927 に答える