• 締切済み

メール送信できたのに、FALSEが返ってきます

if (mail(..... を使ったお問い合せフォームを使用しています。 php5で正常に動いていたものを、そのままサーバーを移して(こちらはphp4)動作確認してみました。 するとメールは正しく送信されたのですが、if (mail(....がFALSEを返し、「送信に失敗しました」と表示されます。 メールが送信されたのにphp5ではTRUE、php4ではFALSE、このようなことが起こる可能性としては、どのようなことが考えられるでしょうか。 正直phpには明るくありませんが、アドバイスを元に原因をつきとめて修正したいと考えております。 よろしくお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

php4/5の差異というよりは、第5引数(additional_parameters)を指定しているのではありませんか(safe modeではfalseが返ります。)

koby_2011
質問者

お礼

safe modeかどうかで結果が異なってくるのですね。 解決策としてはsafe modeのon offでしょうか。(切り替えができればですが…。) まずはadditionnal_parametersというものを調べてみようと思います。 解決したらこちらでご報告します。 ありがとうございます。

koby_2011
質問者

補足

いろいろ調べまして、セーフモードの切り替えはできないレンタルサーバーということがわかりました。 addtional_parametersについても調べました。$to, $subject, $body, $headerまでしかないので、第五引数は設定されていないように思いました。 拡張子はcgiなのでCGIモードというもので動作していると解釈しました。 また、手がかりがつかめたときに挑戦しようと思います。

関連するQ&A

  • mail()関数の値がtrueしか返ってこないです

    PHP初心者です PHPに関する質問なのですが メールフォームにメールアドレスを入力して送信すると メールが返信されるスクリプトを作成中 <?php if (mail($_POST["mail"],'test','test@xxx.ne.jp') echo "メールを送信できました"; else echo "メールを送信できませんでした"; ?> という風なソースを書いて実行しました メールアドレスを正しく入力して送信するとちゃんと メールが届きます、それは当然なのですが たとえば適当な文字の羅列 (例:f所亜ジョあじょgじゃおじょあじょじょあ) こんな文字をフォームに入力して送信しても if構文が正常に動作せず、"メールが送信できました" と表示されます、これはifの条件の値がTRUEしか 返ってきてないということなのでしょうか? また、このif構文を正常に動作させるにはどうしたら いいでしょうか?教えてもらえるとありがたいです・・・・

    • 締切済み
    • PHP
  • phpでメールを送信

    phpでメーラーを起動させずに単純なメール送信をするにはどうしたらよいのでしょうか? mail()を使って問い合わせ用のメールフォームを作りました。フリーホスティングサーバーにアップロードしようとしたところ、そのサーバーはsendmailが使えない仕様になっていました。そのせいでmail()を使用してのメール送信ができません。 私では経験不足なため解決方法がわかりません。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでメールが送信できない

    弊社でお客様のお問い合わせフォームをPHPで作成しているのですが、 お客様の環境でメールを送信することができません。 サーバー環境は以下の通りです。 Red Hat Linux 2.6.9 Apache/2.0.52 PHP 4.3.9 原因の調査で以下のようなチェックを行いました。 【お客様に御願いしたチェック】 1. サーバーでsendmailコマンドを利用してメールが送れるか? 送ることができる。 正しくキューイングされ、送信されることまで確認OK 2. php.iniのsendmail_pathの確認 sendmail_path は /usr/sbin/sendmail -i -tになっている。 /usr/sbin/sendmailはちゃんとある 3. mail()が使えないPHP /usr/sbin/sendmail,/usr/lib/sendmailがなければmail()が使えないPHPがビルドされるケース。 標準のPHPを利用しているので、問題ない。 【弊社が担当したチェック】 1. メールを送信するPHPスクリプトの不具合 PHPスクリプト自体は正常に動作する。 php.iniのdispaly_errorsをONに変更してもエラーメッセージはでない。 2. 簡単なmail()関数を使用したチェック 以下のようなphpスクリプトで確認。 OKがブラウザに表示される。 <?php if (mail("私のメールアドレス", "テスト", "テスト本文", "From:私のメールアドレス")) { echo "OK"; } else { echo "NG"; } ?> 何か原因があるのでしょうか? どなたか教えてください。

    • ベストアンサー
    • PHP
  • メール送信プログラム

    PHPで作成したpostfixを使ったメール送信プログラムが上手くいきません。 最下部の動作環境において下記のプログラムを実行したところ、trueが返ってきているためmb_send_mail()自体は成功しているようですが、yahooのウェブメールにメールが来ておらず、どうやら送信に失敗しているようです。(他のアドレスにも試しに送ってみましたがいずれも届きませんでした) postfixなどの設定が上手くいっていないのではないかと思い、一応ウェブで調べて自分なりに,/etc/postfix/main.cfを設定してみたのですが、うまく行きません。main.cfの設定では mydomain = example.comを加える myhostname = example.comを加える #inet_interfaces = all → inet_interfaces = all(コメントアウトをはずす) といったことを試みてみました。 他にどこに原因があるのか分かりません。php.iniなども特にいじっていません。どうすればメールの送信が出来るようになるのでしょうか? どうぞご教授お願いいたします。 <?php $to = "xxxxx@yahoo.co.jp"; $subject = "テストメール"; $body = "テスト"; mb_language("ja"); mb_internal_encoding("ISO-2022-JP"); if(mb_send_mail($to, $subject, $body)){ echo "true\n"; }else{ echo "false\n"; } ?> 動作環境 ----------------------- 本体:MacBook MB467J/A OS: Mac OS X PHP 5.2.8 Postfix 2.4.3 -----------------------

    • ベストアンサー
    • PHP
  • Firefoxのメールフォームから送信されない

    PHP5でメールフォームを作成しました。 IE6とFirefox2で動作確認を行っていますが、IE6では正常に送信できるのに、FF2では送信されません。 確認のため、以下のようにしてFF2で試してみたところ、画面には「OK」と表示されますがメールは送信されません。 if (mb_send_mail(・・・・)) { print "OK"; } else { print "NG"; } IE6では送信できるので、コードやメールアドレスの入力ミスではないと思います。 IE6とFF2との違いがあるのでしょうか?

    • 締切済み
    • PHP
  • PHPでメール送信を行う場合、SSLで送信できないものでしょうか?

    PHPでいわゆる問い合わせフォームをつくっています。 SSLの設定していますので、次のような感じです。 https://www.xxx.com/1.php https://www.xxx.com/2.php(内容確認) https://www.xxx.com/3.php(送信完了) 最後の送信完了部分で 管理者宛にメールを送信を行っています。 mb_send_mailを使っています。 この時、このメールはおそらく暗号化されてものではなく 平文でとんでいるんだと思います…。 これをPHPを使ってSSLで送信する方法ってないものでしょうか…。 もしあれば、ぜひソースでお教えいただけないでしょうか…… よろしくお願いします。 ※環境としてはPHP5.2.5 xreaのレンタルサーバーを利用しております…。

    • 締切済み
    • PHP
  • PHPでの変数の扱い方

    PHPで(1)、(2)共にtrueになります。 (1)、(2)についてどうしてこうなるのか簡単に解説してもらえませんか。 また(1)が正しく動作するようにするにはどう修正すればいいですか。 (1) $value=0; if($value == '-'){ print("true"); }else{ print("false"); } (2) $value='-'; if($value == 0){ print("true"); }else{ print("false"); }

    • ベストアンサー
    • PHP
  • メール送信プログラム

    いつもお世話になっております。 今まで動いていたメール送信のプログラムが正常に動かなくなりました。メールは送信されるのですが、ボディーの箇所とヘッダーの箇所の変数部分にあたるところが空白になってしまいます。 今までは正常に動いていたんです、SJISからUTF-8に移行したからなんでしょうか? 本番環境(SJIS)(サーバー:ロリポップ)のほうもなぜかいじっていないのにちゃんと動作しなくなっています。 以下、ロジックです(UTF-8にしたもの)。 <?php mb_language("Ja"); mb_internal_encoding("UTF-8"); $to = "test@test.com"; $title = "お問い合わせ"; $body = "■名前\n$contact_name\n ■メールアドレス\n$contact_email\n ■お問い合わせ内容\n$contact_naiyou\n"; $headers = "From:$contact_name<$contact_email>"; if(mb_send_mail($to, $title, $body, $headers)) { print "お問い合わせありがとうございます。"; } else { print "送信出来ませんでした。"; } ?> 推測されること等ありましたら、ご教授よろしくお願いします。

    • ベストアンサー
    • PHP
  • メール送信フォーム:SBは送信できるがdocomoは×、何故?

    PHPのメールフォームを使っています。 さくらインターネットレンタルサーバ上にアップして利用しています。 PCから、このメールフォームで、もちろん送信可能です。 SoftBankからでも、送信可能です。 しかし、肝心のdocomoから何故か送信ができません。 (ちなみに、auは手元に持っていないため、テストできていません) メールフォームに項目を入れ、[送信]ボタンでsubmitするタイプですが、 SoftBankは、submit後、送信完了ページに飛び、送信内容もちゃんと送信されます。 しかし、docomoは、[送信]ボタンを押すと、“指定サイトがみつかりません(404)”とメッセージがでるだけで、内容も送信されず、送信完了ページにも移動しません。 docomoでは使用できない、PHPの命令でもあるのでしょうか? PHP内で主に使用されているのは、 配列変数 global 変数 function switch for if~else foreach echo print <<<END・・・END;を用いたHTML記述などです。 PHP内部で、Javascriptは用いていません。 PC上ですでに使ってしまっているメールフォームなので、いまさら他のメールフォームを利用したくないのです。 何とかdocomoで実現したいので、どなたかわかる方がいましたら、お教えください。 よろしくお願いします。m(_"_)m

    • 締切済み
    • PHP
  • mb_send_mailでメール送信できない

    次のようなコードを使っているのですが、メールも送信できていません。 error_reportingでエラーをチェックしようとしても何も表示されません。 ブラウザには false しか表示されません。 サーバーはxserber,php5.3を利用しています。 メールアドレスの変更、サブジェクトを空、ボディを空、など試してみましたが、 falseのままで一度も成功しません。 phpファイルはUTF-8で作成しています。 ずっと悩んでいます。よろしくお願いします。 function sendMail( $to, $subject, $body ){ error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); //言語設定、内部エンコーディングを指定する mb_language("japanese"); mb_internal_encoding("UTF-8"); $from = FROM_MAIL; //送信 if( mb_send_mail($to,$subject,$body,"From:".$from) ) echo "true"; else echo "false"; }

    • ベストアンサー
    • PHP

専門家に質問してみよう