エラー内容は「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()」。
調査結果として、問題はPHP.iniファイルにあると考えられる。
書籍サンプルのメール送信フォームを実行したのですが、
書籍サンプルのメール送信フォームを実行したのですが、
送信エラーになってしまいます。エラー内容は下記のとおりです。
>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:\xampp\htdocs\php-recipe\06\02\16-3.php on line 59
>メール送信フォーム
>送信失敗
それで、調べてみたのは、PHP.iniファイルで、私が関連があるだろうと思った場所は下記の内容でした。
[mail function]
; For Win32 only.
>SMTP = localhost
>smtp_port = 25
; For Win32 only.
;sendmail_from = me@example.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
そして、line 59というのは、(5)の行です。
(1)># メールの送信と結果の判定をします。セーフモードがOnの場合は第5引数が使えません。
(2)>if (ini_get('safe_mode')) {
(3)> $result = mb_send_mail($mailTo, $subject, $comment, $header);
(4)>} else {
(5)> $result = mb_send_mail($mailTo, $subject, $comment, $header, '-f' . $returnMail);
(6)>}
さらに、ファイアウォールはどうかな?と思ったのですが、私の知恵では大事なところがわかりません。
Apache HTTP ServerとXampp-controlは、ローカルプロキシとして設定するという場所が、
チェックしてありませんけど、そこは関係ないでしょうか?
さらに、アンチウイルスソフトの設定にリダイレクト設定というのがあり、
ローカル通信を無視するというところにチェックがしてありますが、それは関係あるでしょうか?
分からないところが多すぎるので、見当がつきませんが、まったく変更を試してないのは、
ファイアウォールの設定ぐらいです。
私の説明では、意味不明のところも多いでしょうが、
お気づきの点があれば、教えてください。お願いします。
追伸、
PHP環境は、WindowsXP(SP3)Home Edition 1.5GBメモリー、1.6GHz
Xampp Ver1.71+EclipseBuild id: 20100218-1602です。
お礼
Mercuryのメールが使えるようになったので、プロバイダのメアドは使わないようにしました。 Mercuryの設定ミスは、恥ずかしい事に127.0.0.1を127,0,0,1と書いたことでした。 いまひとつ完璧ではないですが、一応先に進めるのでこれで良しということで。 有難うございました。
補足
まだ、解決はしておりませんが、一応途中経過報告しておきます。 おっしゃるとおりに、sendmail_pathの行をコメントアウトし、 実行してみたところ、送信完了とでました。 しかし、実際のところ送信されてはいませんでした。 何故、送信されて無いのに送信完了と出たのだろう?と考えましたが、まだ結論は出ていません。 私に、他の場所のミスがあるのかもしれませんが、正直なところ、;For Unix only. とかいてあるのは、Windowsパソコンの設定ではないのではないかとの疑いも持ちました。(嫌な奴ですみません。) しかし、プロバイダによって出来ないところがあると言う話しだったので、良く調べたところ、私の使っているOCNというプロバイダは、迷惑メール対策でメール送信規制を25番ポートでやっているらしく、変わりに587番を使えとか書いてあるような感じでした。 http://www.ocn.ne.jp/mail/info/op25b/ それと、Xamppに入っているMercuryというメールサーバーを利用しようと考えましたが、 そっちの方も上手く行かずに、どっちつかずになって混乱しております。 従って、まだ上手く行ってはいないんですが、時間がかかりそうなので、 一応、お礼を申し上げておきます。 エラーの意味、それからプロバイダの対応など、私にとって有益な情報をコメントいただき 有難うございました。これからもまたよろしくお願いします。