1

異なるホスト上の smtp サーバーを使用して、またはローカルの smtp サーバーがインストールされている場合、php から電子メールを送信できることはわかっています。私が知りたいのは、ローカルまたはリモートの smtp サーバーなしで php が電子メールを送信できるかどうかです。sendmail プログラムについて聞いたことがありますが、サーバーにメール サーバーがインストールされていなくても機能しますか?

4

1 に答える 1

2

ある時点で、SMTP サーバーと通信する必要があります。ローカル ホストの SMTP サーバー経由で送信するのが最もクリーンなオプションであり、スパム フィルターを通過する可能性が最も高くなります。

メールサーバーが行うことは非常に複雑です。宛先としてアウトバウンド ホストを使用して、電子メール クライアントから電子メール サーバーに到着する平均的な電子メールを考えてみましょう。

  1. サーバーはユーザー アカウントをチェックし、有効であることを確認します。
  2. 電子メールは、受信者ごとに個別に、または 1 つのメッセージとしてキューに入れられます (サーバーによって異なります)。
  3. サーバーはキュー内の電子メールを検索し、各受信者アドレスを処理します。これには、ターゲット ドメインごとに MX レコードの DNS ルックアップが必要です。
  4. 電子メール サーバーは MX レコードで指定されたアドレスに接続し、SMTP の場合と同様に電子メールを配信します。
  5. 成功すると、電子メールはキューから削除されます。失敗すると、電子メールはキューに残り、サーバーは後で再試行するか (指数バックオフ - グレーリストを参照)、後で POP3 経由で電子メールをチェックするときにメール キューに戻されます。

キュー内の次の電子メール サーバーは、最後のサーバーが電子メールを受信して​​受信者のメールボックスに留まるまで、上記の手順を繰り返します。

PHP 内でそれを行うことは可能ですが、お勧めしません。MX レコードのルックアップは、メール サーバーが許容するあらゆる種類の非準拠のことを行うため、扱いにくい場合があります。さらに、対象の SMTP サーバーに直接接続しようとしているときに、スクリプトがタイムアウトする可能性があります。一部のサーバーは、電子メールを「グレーリスト」に設定するようにも構成されています。つまり、電子メールは最初は拒否されますが、後で受け入れられます (たとえば、30 分は珍しくありません)。平均的な PHP スクリプトでは、そのシナリオを処理できません。

于 2013-01-08T14:44:33.927 に答える