2008-09-02 19 views
2
私はこの問題になってい

:このスクリプトからPHPのメール()機能していないWindows 2003では、IIS SMTP

PHP Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for [email protected] in c:\inetpub\wwwroot\mailtest.php on line 12 

:サーバー上のphp.iniから

<?php 
$to = "[email protected]"; 
$subject = "test"; 
$body = "this is a test"; 

if (mail($to, $subject, $body)){ 
    echo "mail sent"; 
} 
else { 
    echo "problem"; 
} 
?> 

セクション:

を ​​

(「サーバー」と「ドメイン」は実際のサーバーとドメイン名を正確に参照しています)

IISでは、SMTPが実行されています。 "Access"タブの下で、コンピュータが、この仮想サーバーを経由して中継することができる"Relay"ボタン、選択はcheckbox "only the list below"に設定され、サーバーがWindows Server 2003 Service Pack 2を実行している"127.0.0.1(xxx.xxx.xxx.xxx)" (x's representing actual server IP address).

リストに私はそれがあると仮定し、完全に5 PM 9月1日、2008年のようパッチを適用し、ありますIIS7(確認方法?)を実行しています。

アイデア?

Espoに応答しています。このマシンはデータセンターでホストされています。私たちはgmailアカウントを使用したくない(それをやっていた、それから離したい)。 Windowsサーバー2003には、独自のSMTPサーバーが付属しています。

更新:Yaakov Ellis氏のアドバイスでは、すべてのリレー制限を削除し、サーバーのIPを許可されたリストに追加しました(逆のDNSボタンを使用しています)。

私を助けてくれたEspoとYaakovの両方に感謝します。

答えて

4

SMTPサーバーのリレーに関するIP制限を削除し、すべてのリレーに開くようにしてください。これが設定されているときに動作する場合は、問題が元の制限と関係していることがわかります。この場合、DNSの問題であるか、間違ったIPアドレスがリストされている可能性があります。

1

間違ったSMTPサーバーを使用しています。 Gmailアカウントに電子メールを送信する場合は、私の回答hereをご覧ください。

他のアカウントにもメールを送信する必要がある場合は、ISPにSMTPの詳細をお尋ねください。

EDIT:ISPのSMTPサーバを使用する方がメールキューを監視し、悪用をチェックし、メールソフトウェアを更新するので、常にそうであると思います。ビジネスでWebアプリケーションを開発している場合は、あなたがしていることに固執し、他の人に自分のもの(たとえばメールサーバの実行)をさせておくことが大抵常にベストです。

もし何らかの理由でローカルのSMTPサーバを使いたい場合は、最初にphp-partを除外します。 KB153119をフォローし、SMTPServer IISlogでエラーをチェックしてください。

EDIT2: KB記事にはExchange用ですが、他のSMTPサーバー(IISを含む)でも同じコマンドが使用されていますので、記事。

0

@エスポ:それをKB153119にします。ありがとう。

メールサーバーについて:私はあなたを聞いています。

もっと詳しく調べると更新されます。

0

@Espoこの記事は、IIS7.0 SMTPサーバーではなく、Exchangeサーバーに関するものです。

概要:この資料では、SMTP通信の問題をトラブルシューティングするためにSMTP(簡易メール転送プロトコル)サービスを実行するコンピュータのポート25にtelnetで接続する方法について説明します。エラーメッセージを含むこの資料の情報は、Microsoft ExchangeベースのサーバーとのSMTP通信の問題を解決する際の問題にのみ適用され、一般的なトラブルシューティングのためのものではありません。

0

iis6,2003サーバで同じ問題が発生しました。 phpはmail()を使用しようとすると常に失敗しました。 私は、Relay Restrictionを 'Only below below list'(デフォルトでは空)から 'All below the list below'に変更することで、phpからメールを受け付けるようにしました。 リレーの制限は、smtp serversのプロパティ画面の[アクセス]タブにあります。 もちろん、サーバがインターネットに接続されていれば、これらの中継制限についてもっと賢明な対応が必要ですが、私の場合、これはdevボックスの仮想サーバ上にあります。助け

希望。

関連する問題