• 締切済み

「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

  • メールを送りたい

    PHP初心者です。 簡単なメールフォームを作成しました。 後はphp.iniのSMTPのところにメールサーバー名を記入すれば送れるはずなんですけど、以下のようなエラーが出てしまいます。 Warning: mb_send_mail() [function.mb-send-mail]: SMTP server response: 550 Can not speak with you in C:\Apache2\htdocs\test1.php on line 44 私のプロバイダはBiglobeでして、SMTP認証を行っているプロバイダかどうかは知りません。 後、私が使っているメールはほとんどがフリーメールでして、どうやってSMTPサーバー名を探せばいいのか分かりません。 アドバイスどうか宜しくお願い致します。

    • ベストアンサー
    • PHP
  • phpでメール送信

    phpでメールを送信しようとすると、 Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() というエラーが出てしまいます・・・。 何が原因なんでしょうか?Localhostの原因でしょうか?

    • 締切済み
    • PHP
  • ローカル環境でのメール送信

    PHP超初心者です。 ローカル環境でmb_send_mail関数をつかってメール送信をしたいのです が、上手くいきません。 エラーメッセージは Warning: mb_send_mail() [function.mb-send-mail]: SMTP server response: 530 5.7.0 Must issue a STARTTLS command first n44sm11126503pyh in C:\xampp\htdocs\○○○\○○.php on line 15 とでています。 文字コードはUTF-8で保存しており、 <?php mb_language("ja"); mb_internal_encoding("UTF-8"); $mailto="○○○@○○○.jp"; $subject="タイトル"; $content="内容"; $mailfrom="From:".mb_encode_mimeheader("nicoko")."<○○○@フリーメールアドレス.com>"; mb_send_mail($mailto,$subject,$content,$mailfrom); ?> です。 15行目はmb_send_mail($mailto,$subject,$content,$mailfrom); 色々調べたところ、 (1)SMTP = メールアドレス用のsmtpサーバの設定 (2)smtp_port = 25 (3)sendmail_from = メールアドレス を設定しなおし、 C:\xampp\apache\bin\php.ini C:\xampp\php\php.ini C:\xampp\php\php5.ini C:\xampp\php\php4\php.ini 全ての設定を変更しました。 またphpinfoで確認したところ(1)~(3)まで変更されていました。 (3)はOutlookのメールのアカウント→プロパティを見て サーバー情報→送信メールに○○.○○○.jpと書いてあり、 それをうつしました。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • スクリプト中の特定の処理部分における時間制限のかけ方

    初めて質問させていただきますheepoo9と申します。 PHP歴は1年ちょっとです。 (1)PHP実行WEBサーバ(サブSMTPサーバ(Xmail)も兼ねる) (2)メール送信用SMTPサーバ(Postfix、25番ポート使用) の二台を使ってメール送信をしたいのですが、その際にクリアできない問題に当たっています。 (1)上のPHPスクリプトをブラウザを通して起動させ、(2)のSMTPサーバを使ってmb_mail_send()でメールを送るとします。 現在(1)のphp.iniではSMTPのデフォルトがlocalhostに設定されているためにini_set(SMTP,"(2)サーバIP")という形で一時的にSMTPを(2)に切り替えて送信しています。 その際に(2)サーバが何らかの理由で使用不能ならばデフォルト通り(1)(localhost)でメール送信をしたいとします。 この時の処理として、 --------------------------------- //SMTP設定を(2)に変更 ini_set(SMTP,"(2)サーバIP"); $mail_res = mb_mail_send(各引数); if(!$mail_res){ ////SMTP設定をデフォルトに変更 ini_restore(SMTP); mb_mail_send(各引数) or die; } --------------------------------- のような処理を行っているのですが、これで対応できないケースについてどうしたら良いのか分からず困っています。 具体的な(2)サーバの状況として、 ・電源が落ちている ・完全にOSが落ちている ・LANケーブルが切れている などの場合には上記の処理で問題ないのですが、 ・ソケットで25番ポートへの接続は正常() ・Postfixに何らかの問題がある の場合に、mb_mail_send()部分でのレスポンスが得られず、タイムアウトとなってしまいます。 対策として、このレスポンスを得るまでの時間に時間制限を設けて、 ・5秒以上応答無しならば、デフォルトSMTP設定に戻して(1)サーバから送信する などの処理を行おうと思うのですが、PHPスクリプトの特定の部分に制限時間を設ける方法を全く探し出せずにいます。 非常に困り果てています。 どなたか解決方法がおわかりになる方はいらっしゃいますでしょうか?

    • 締切済み
    • PHP
  • SMTPサーバの接続に失敗する原因について

    現在、Webからmb_send_mailを使ってメール送信を行おうと思っていますが、 以下のようなエラーが発生します。 Warning: mb_send_mail(): Failed to connect to mailserver at "XXX.XXX.co.jp" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in XXX.php on line XX エラー内容の通り、SMTPサーバに接続できていないのですが、 同じソースをPHP.EXEを使って直接実行すると、 正常にメールが送信されます。(php.iniも同じ) Apacheの設定のような気もしますが、 原因・解決方法について、 どなたかご存知の方がおられましたら、ご教授ください。 環境 Apache2.0.50 PHP4.3.8 以上、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPについて質問です。

    Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Program Files\Apache Group\Apache2\htdocs\sai.php on line 51 php5で送信フォームを作成してますが上記のようば エラ―がでて困っております。 送信ができるよう、修正の仕方を教えて下さい。 お願いします。

    • 締切済み
    • PHP
  • SMTPサーバーにてメールの送信

    PHPでメールを送れないかと調べたところさまざまな方法があるようですが、XAMPPにMercuryMailがついていたのでそれを使ってやってみることにしました。 php.iniでは SMTP = localhost smtp_port = 25 の設定でlocalhostにメールを送るとMercuryMailにメールが届くんですが、そこからいざ外に送ろうとなるとうまく遅れないようです。 調べてみたらISPのほうで25番ポートブロックなるものでブロックされるとあることなのでかわりに587ポートで送ることにしました。 しかし、それでもうまく届けることができませんでした。 そこで、リレーをさせて送ろうとyahooのSMTPサーバーとBIGLOBEのSMTPサーバー、2つでためしたのですがやはりどちらも送ることができませんでした。 双方ともちゃんとSMTP_AUTHをつかってIDとPWを入れていますが送ることができませんでした。 環境はXAMPP1.6.6aをつかっており、MercuryMailのバージョンは4.5.2です。 OSはWindows XP Home Edittion ISPはBIGLOBE フレッツ光回線です。 この環境でSMTPサーバーをたてることはできないのでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • ローカル環境でのメール送信ができません。

    ローカル環境で、mb_send_mail関数を使用してメールの送信を行いたいのですが、 Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in ... というエラーメッセージが表示されてしまいます。 動作環境は、 Apache2.0.55 MySQL5.0.15 PHP5.0.5 を使用しており、PHP,MySQLの内部文字コードはShift_JISで統一しております。 別途メールサーバを導入しないと駄目なのでしょうか?

    • ベストアンサー
    • PHP
  • ローカル環境でのメール送信ができません。

    ローカル環境で、mb_send_mail関数を使用してメールの送信を行いたいのですが、 Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in ... というエラーメッセージが表示されてしまいます。 ローカル環境の設定は、 Apache2.0.55 MySQL5.0.15 PHP5.0.5 を使用しており、PHP,MySQLの文字コードはShift_JISで統一しております。 別途メールサーバを導入しないと駄目なのでしょうか?

  • メール送信について

    こんばんは。PHPでmb_send_mailを使ってメールを送信したいのですが、「Warning: mb_send_mail() [function.mb-send-mail]: SMTP server response: 521 mail not accepted from this domain in C:\Program Files\Apache Group\Apache2\htdocs\samples\chap2\sendmail.php on line 5メール送信に失敗しました。」とエラーが出てしまい上手くできません。 ■PHPスクリプト 1:<?php 2:$to='○○○○○@yahoo.co.jp'; 3:$subject='テストメール'; 4:$body='ようこそ!'; 5:if(mb_send_mail($to,$subject,$body)){ 6: print('メール送信に成功しました。'); 7:} 8:else{ 9: print('メール送信に失敗しました。'); 10:} 11:?> PHP.iniファイルはSMTP=smtp.mail.yahoo.co.jp、sendmail_from=CQW15204nifty.comと設定しております。 参考書通りにやっているのですが、メーラーに送られません。この状態で他に考えられる原因とかありますか?わかる方ぜひ教えてください。

    • 締切済み
    • PHP