- 締切済み
「SMTP」が「localhost」ではない場合の対処方法
PHPバージョン:PHP4.4 サーバー移行後、メールフォームが送れなくなり、以下エラーが出ました。 「Warning: mb_send_mail(): SMTP server response: 554 ・・・」 サーバーはまるごと移行(設定ファイルもそのまま)し、諸事情で過去サーバーも併用しています。 phpinfoで調べると、「SMTP」が「localhost」になっていませんでした。 「SMTP」が「localhost」ではない場合、どのようい対処したらよろしいのでしょうか? どうかよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
PEARのMailを使えば、自サーバーではない外部smtpサーバーを 指定してメールがおくれますよ
- takapiii
- ベストアンサー率55% (944/1707)
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関数は試してはいないという事ですか?
お礼
お礼が遅くなりまして申し訳ございません。 結果、サーバー担当者に連絡し、修正してもらいました。 丁寧に記述していただき、大変参考になりました。 ありがとうございました。
- takapiii
- ベストアンサー率55% (944/1707)
SMTP server response: 554 の後のメッセージが重要なのですが・・・。 外部のSMTPを利用しているのなら、SMTPの設定で認証が必要とかリレーを禁止しているとか、いくつかの制限があるんじゃないでしょうか。 ISPを利用しているのか自社サーバなのかによって、対処法が全く変わります。自社サーバなら、設定を変えれば済む話ですね。
補足
ご回答誠にありがとうございます。助かります。 > 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ファイルを変更するだけでは無理でしょうか? ご多忙のところ、恐れ入ります。
お礼
お礼が遅れまして申し訳ございませんでした。 サーバー設定を変更し、問題を解決しました。 頂いたご回答は、今度テストしてみます。 ご多忙のところ、誠にありがとうございました。