2

私はこの問題を抱えています:

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

このスクリプトから:

<?php
$to = "chris.mahan@gmail.com";
$subject = "test";
$body = "this is a test";

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

サーバー上のphp.iniのセクション:

[mail function]
; For Win32 only.
SMTP = server.domain.com; for Win32 only
smtp_port = 25

; For Win32 only.
sendmail_from = support@domain.com
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =

(「サーバー」と「ドメイン」は実際のサーバーとドメイン名を正確に参照していることに注意してください)

IISでは、SMTPが実行されています。"Access"タブ、ボタンの下"Relay"で、この仮想サーバーを介して中継できるコンピューターを選択するが設定されてcheckbox "only the list below"おり、リストには次のように設定されています。"127.0.0.1(xxx.xxx.xxx.xxx)" (x's representing actual server IP address).

サーバーは稼働してWindows Server 2003 Service Pack 2おり、2008年9月1日午後5時の時点で完全にパッチが適用されています。稼働していると思いますIIS7(確認方法は?)。

何か案は?

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

更新:Yaakov Ellisのアドバイスに従って、すべてのリレー制限を削除し、サーバーIPを許可リストに追加し(提供されているDNS逆引きボタンを使用)、動作を開始しました。

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

4

5 に答える 5

4

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

于 2008-09-02T07:30:53.520 に答える
1

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

他のアカウントにも電子メールを送信する必要がある場合は、SMTPの詳細についてISPに問い合わせてください。

編集:ISP SMTPサーバーを使用する方が常に良いと思います。なぜなら、人々がメールキューを監視し、エクスプロイトをチェックし、メールソフトウェアを更新する必要があるからです。あなたのビジネスがウェブアプリケーションを開発しているなら、ほとんどの場合、あなたがしていることに固執し、他の人に彼らの仕事をさせてください(例えば、メールサーバーを実行している)。

それでも何らかの理由でローカルSMTPサーバーを使用したい場合は、最初にphp-partを除外します。KB153119をフォローしてから、 SMTPServerIISlogでエラーを確認してください。

EDIT2:そのKB記事には交換用と書かれていますが、他のSMTPサーバー(IISを含む)でも同じコマンドが使用されているので、記事の例を使用してメールを送信できるかどうか試してみてください。

于 2008-09-02T06:17:59.577 に答える
0

@Espo: KB153119 でそれを行います。ありがとう。

メールサーバーについて: そうですね。

さらに発見したら更新します。

于 2008-09-02T06:57:24.473 に答える
0

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

概要から: この記事では、Simple Mail Transfer Protocol (SMTP) サービスを実行しているコンピューターでポート 25 に Telnet 接続して、SMTP 通信の問題をトラブルシューティングする方法について説明します。エラー メッセージを含むこの記事の情報は、Microsoft Exchange ベースのサーバーとの SMTP 通信の問題を解決しようとする場合の問題にのみ適用され、一般的なトラブルシューティングを目的としたものではありません。

于 2008-09-02T07:19:46.073 に答える
0

2003年サーバーのiis6でphp 5という同じ問題がありました。mail() を使用しようとすると、PHP は常に失敗します。リレー制限を「以下のリストのみ」(デフォルトでは空)から「以下のリストを除くすべて」に変更することで、phpからのメールを受け入れることができました。リレーの制限は、smtp サーバーのプロパティ画面の [アクセス] タブで確認できます。もちろん、サーバーがインターネットに公開されている場合は、これらの中継制限についてより賢明にする必要がありますが、私の場合、これは開発ボックスの仮想サーバー上にあります.

それが役立つことを願っています。

于 2009-01-10T17:59:14.370 に答える