こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

書籍サンプルのメール送信フォームを実行したのですが、

書籍サンプルのメール送信フォームを実行したのですが、
送信エラーになってしまいます。エラー内容は下記のとおりです。

>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です。

投稿日時 - 2010-04-20 19:31:22

QNo.5839647

困ってます

質問者が選んだベストアンサー

localhostでメールサーバ(SMTPサーバ)が動作していないというエラーです。
まず、php.iniの下記のコメントを外してください。

;sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"

XAMPPでインストールしているようなので、すでにsendmailはインストールされていると思います。

なお、ご利用のISP(プロバイダ)によっては、自前のSMTPサーバからの発信を認めていない場合があります。ご確認ください。

投稿日時 - 2010-04-20 22:49:37

補足

まだ、解決はしておりませんが、一応途中経過報告しておきます。
おっしゃるとおりに、sendmail_pathの行をコメントアウトし、
実行してみたところ、送信完了とでました。
しかし、実際のところ送信されてはいませんでした。
何故、送信されて無いのに送信完了と出たのだろう?と考えましたが、まだ結論は出ていません。
私に、他の場所のミスがあるのかもしれませんが、正直なところ、;For Unix only.
とかいてあるのは、Windowsパソコンの設定ではないのではないかとの疑いも持ちました。(嫌な奴ですみません。)

しかし、プロバイダによって出来ないところがあると言う話しだったので、良く調べたところ、私の使っているOCNというプロバイダは、迷惑メール対策でメール送信規制を25番ポートでやっているらしく、変わりに587番を使えとか書いてあるような感じでした。
http://www.ocn.ne.jp/mail/info/op25b/

それと、Xamppに入っているMercuryというメールサーバーを利用しようと考えましたが、
そっちの方も上手く行かずに、どっちつかずになって混乱しております。
従って、まだ上手く行ってはいないんですが、時間がかかりそうなので、
一応、お礼を申し上げておきます。
エラーの意味、それからプロバイダの対応など、私にとって有益な情報をコメントいただき
有難うございました。これからもまたよろしくお願いします。

投稿日時 - 2010-04-21 20:06:59

お礼

Mercuryのメールが使えるようになったので、プロバイダのメアドは使わないようにしました。
Mercuryの設定ミスは、恥ずかしい事に127.0.0.1を127,0,0,1と書いたことでした。
いまひとつ完璧ではないですが、一応先に進めるのでこれで良しということで。
有難うございました。

投稿日時 - 2010-04-24 15:38:45

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問