• 締切済み

「SMTP」が「localhost」ではない場合の対処方法

PHPバージョン:PHP4.4 サーバー移行後、メールフォームが送れなくなり、以下エラーが出ました。 「Warning: mb_send_mail(): SMTP server response: 554 ・・・」 サーバーはまるごと移行(設定ファイルもそのまま)し、諸事情で過去サーバーも併用しています。 phpinfoで調べると、「SMTP」が「localhost」になっていませんでした。 「SMTP」が「localhost」ではない場合、どのようい対処したらよろしいのでしょうか? どうかよろしくお願いいたします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

PEARのMailを使えば、自サーバーではない外部smtpサーバーを 指定してメールがおくれますよ

prwxny
質問者

お礼

お礼が遅れまして申し訳ございませんでした。 サーバー設定を変更し、問題を解決しました。 頂いたご回答は、今度テストしてみます。 ご多忙のところ、誠にありがとうございました。

  • takapiii
  • ベストアンサー率55% (944/1707)
回答No.2

Relay access denied なので、リレーが禁止されています。 Webサイトを置いているドメイン、メールを発信しようとしているドメインからのメールのリレーをSMTPが拒否しているので、そのままだと送信できませんね。 ISPにお願いし、SMTPの設定でリレーを許可して貰えばいいのですが、それが難しいとなると、localhostで送信可能か、試してみる価値はあります。 ini_set( "SMTP", "localhost"); ini_set( "smtp_port", 25); ini_set( "sendmail_from", "sender@example.com); ←例です。 ini_setが利かない、またはlocalhostのsendmailなりqmailなりで送信可能に設定されているという事が前提です。 事前にtelnet等で確認して見るといいと思います。 -------- $ /usr/lib/sendmail -t -i ←パスは一例 To: to@example.com     ←例 Subject: test From: from@example.com   ←例               ←一行開け test body          ←本文 .              ←ドットで抜ける -------- それでも駄目ならPHPでソケット通信を書くしかないでしょうね。 というか、基本的な話ですが、SMTP送信をしようとしてるんですよね? mail関数は試してはいないという事ですか?

prwxny
質問者

お礼

お礼が遅くなりまして申し訳ございません。 結果、サーバー担当者に連絡し、修正してもらいました。 丁寧に記述していただき、大変参考になりました。 ありがとうございました。

  • takapiii
  • ベストアンサー率55% (944/1707)
回答No.1

SMTP server response: 554 の後のメッセージが重要なのですが・・・。 外部のSMTPを利用しているのなら、SMTPの設定で認証が必要とかリレーを禁止しているとか、いくつかの制限があるんじゃないでしょうか。 ISPを利用しているのか自社サーバなのかによって、対処法が全く変わります。自社サーバなら、設定を変えれば済む話ですね。

prwxny
質問者

補足

ご回答誠にありがとうございます。助かります。 > SMTP server response: 554 の後のメッセージが重要なのですが・・・。 Warning: mb_send_mail(): SMTP server response: 554 の次は以下のような文章です。 「Warning: mb_send_mail(): SMTP server response: 554 5.7.1<hoge@hogehoge.com>:Relay access denied in C:\...\...\...\...\hoge.php on line 57」 >外部のSMTPを利用しているのなら、SMTPの設定で認証が必要とかリレーを禁止しているとか、いくつかの制限があるんじゃないでしょうか。 認証制限がある場合は、こちらで対処なしでしょうか? >ISPを利用しているのか自社サーバなのかによって、対処法が全く変わります。自社サーバなら、設定を変えれば済む話ですね。 ISPの占有です。設定ファイルをいじらずにフォームメールのコードを書いているPHPファイルを変更するだけでは無理でしょうか? ご多忙のところ、恐れ入ります。

関連するQ&A