0

PHP アプリケーションをホストするローカル サーバーがあります。私のアプリケーションは、異なるアドレスに電子メールを送信します。しかし、私は理解できない問題に気づいています。内部アドレスにメールを送信しますが、外部アドレスにはメッセージを送信しません。

同じネットワーク上に交換サーバーもあります。たとえば、これら2つの「内部ドメイン」があります

domain1.com domain2.com

アプリケーションからこのphp関数を実行すると、問題なく配信されます

mail("name@domain1.com","Test Subject","Test message");

ただし、gmail、yahoo、または外部ドメインにメッセージを送信しようとすると、送信されません

mail("name@gmail.com","Test Subject","Test message");

私のサーバーは、IIS6 経由で PHP5.3.19 がインストールされた Windows 2008 Server R2 で実行されています。

この問題を修正するにはどうすればよいですか?

4

1 に答える 1

0

mail()Windows には Sendmail などがないため、Windows では php.ini に追加の設定が必要です。

1 つ目は、メールを取得するサーバーと必ずしも同じではないISP の送信SMTPサーバーを指す設定です。私がサポートで働いていたとき、受信サーバーは引き続きメールを受け入れるため、あなたが説明したような多くの問題がありましたが、それはローカルのドメインに対してのみです.

2 つ目はsendmail_from設定です。PHP が Windows ディストリビューション用に書いた、ヘッダーの内容に関係なく、すべての SMTP トランザクションで使用する小さなメーラーです。*nix では、Sendmail はヘッダーを読み取ってFrom:アドレス自体を取得します。Windows では、PHP は常に php.ini の内容を使用します。これが「ガベージ」アドレスのようなexample@example.comものであるか、存在しないドメインを持つものである場合、多くのメール サーバーはそれを完全に拒否します。私がお勧めするのは、PHP.ini で適切なものに変更、メーリング スクリプトに次の行を追加することです。

ini_set('sendmail_from', $from_address);

または、 PHP の恐ろしい小さな機能よりもはるかにうまく機能するため、PHPmailerを使用してください。mail()

于 2013-05-30T15:46:37.780 に答える