• ベストアンサー

サーバーによってはmb_send_mailが実行できないこともあるのでしょうか

現在友人に頼まれて、PHPによるmb_send_mail関数を使ったメールフォームを作成しています。 一度私がレンタルしているサーバーで動作確認をして、その後、友人のレンタルしたサーバーにアップしてみましたが、 なぜか動作してくれません。 私のサーバーですと、何の問題もなく動作します。 こういったケースの場合に考えられるのは、 mb_send_mailの実行をサーバー側で拒否しているのでしょうか。 どうぞお助け下さい。

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

  • ベストアンサー
  • kirin_f
  • ベストアンサー率51% (44/85)
回答No.4

sendmail_pathにパスが入っているのでsendmailは 使えます。 まず、動かない方のサーバーのphpinfoの上の方の Configure Commandの中に--enable-mbstringって 入ってますか? これが入ってればmbstring拡張モジュールが入っているということなので、動かない原因は別のところにあります。エラーメッセージやバージョンなど教えてもらえれば、何か原因がわかるかもしれません。 もし入っていなければ、参考URLのサイトさんで漢字コード変換のスクリプトを配布されていますのでこちらを使わせていただくことをおすすめします。 このスクリプトを使ったフォームメールスクリプトも配布されていますので、参考にしてみてはいかがでしょうか?

参考URL:
http://www.spencernetwork.org/
shevy
質問者

お礼

ご丁寧にありがとうございます。 なんと、enable mbstringがありました。 これで拡張モジュールが入っていたということになってしまうのですね。 ですが、mail関数にしてから、問題なく動作するようになりました。 少し不思議ですが、現状、mail関数なのに、 文字化けもしていません。 エラーとしての表記も現われないので、 これ以上、私の状況をご説明するのは困難かと思いますので、一度締め切らさせていただきます。 今回は非常に参考になるアドバイス、誠にありがとうございました。 send関数について不明な点が一点ありますので、 別件質問ということで、今回はポイントを つけさせていただきます。 ありがとうございましたm(_ _)m

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • kirin_f
  • ベストアンサー率51% (44/85)
回答No.3

mb_send_mailは、mbstring拡張モジュールが入っていないと使えません。 バージョンや設定などの違いで、同じスクリプトでも 動いたり動かなかったりすることはありえます。 とりあえず、phpinfo()を出力させてみて、 動くサーバーと動かないサーバーを見比べてみては? sendmail_pathのところを見れば、sendmailが使えるかどうかもわかると思います。 sendmailが入っていれば、mb_send_mailが使えなくても、 mail関数を使って、文字コードの変換を自前でやれば メール送信は可能ですよ。

参考URL:
http://www.php.net/manual/ja/function.phpinfo.php
shevy
質問者

お礼

ありがとうございます。 ちょうどたった今、phpinfo()関数を試してみたところでした。 まず動くサーバーのほうは、 sendmail_path LocalValueが、/usr/sbin/sendmail -t -i Master Valueが、/usr/sbin/sendmail -t -i で、 動かない サーバーのほうは、 sendmail_path LocalValueが、/usr/sbin/sendmail -t -i Master Valueが、/usr/sbin/sendmail -t -i でした。 よくよく見ると一緒ですが、これならsendmailが使えるのでしょうか。 mail関数に置き換えようと思いますが、 文字コード変換について、何か参考になる手法はありますでしょうか。 宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.2

サーバのOSが何か、一番肝心なことが書かれていないので 適当にアドバイスしますが、 UNIX/LINUX系の場合、mb_send_mail関数は、内部のsendmailコマンド を利用して送信することになります。

shevy
質問者

お礼

早速のご回答ありがとうございます。 サーバーのOSは、UNIXのようです。 http://www.asj.ne.jp/server/index.html この場合、何が原因となってメール送信が不可となっていると考えられるのでしょうか。 このサーバーではユーザーのオリジナルCGIを許可しているのですが、なぜ、他のサーバーで動作したものが、このサーバーだと動作してくれないのか、これが本当に不思議でなりません。 また最悪、このサーバーではメール送信が不可能になってしまうのでしょうか。 ちょっと頭がくらくらしてきましたが、なんとか打開策を見つけようと必死です。 どうぞアドバイス宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

制限していると思います。サーバー環境はそれぞれですので。 そこのサーバー管理者に連絡してみるのが一番手です ちなみに私は、メールサービスをかってに使わせないように制限してます

shevy
質問者

お礼

早速のご回答ありがとうございます。 今四苦八苦して作業しつつ、早速のアドバイスに感動しています。 実は http://www.asj.ne.jp/ というサーバーです。 他のサーバーでは問題がなく動いたので、 やはりサーバー側の設定なのかなと思っています。 早速問い合わせてみることにします。 何かお気づきの点があればなんなりとご指摘下さい。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • mb_send_mailに関して

    環境:Windows2008 Server R2 64bit/php5.3.22 教えて下さい。 Windows2008 Server R2 64bit 環境にてPHPを動作させ、mb_send_mail()関数を使って メールを送信しようと考えています。 PHPも問題なく動き、mb_send_mail()関数用にphp.ini も以下のようにメンテナンスし、記述も 問題ないかと思われますが、メールの送信ができません。。。 64bitでは何か設定が違うのでしょうか? 教えて頂きたいと思います。 《php.ini》   [mail function]  For Win32 only.          ← 32bit only とわざわざ記述がある為、64bit ではNG?  http://php.net/smtp  SMTP = XXXXXX  http://php.net/smtp-port  smtp_port = 25  For Win32 only.  http://php.net/sendmail-from  sendmail_from = XXX@XXX.co.jp 《記述内容》  <?php  $mailto = "XXX@XXX.co.jp";  $subject = "掲示板";  $content = "新規投稿がありました。 ☆☆☆";  $mailfrom = "From:mail@colcoat.co.jp";  mb_language("ja");  mb_internal_encoding("UTF-8");  if(mb_send_mail($mailto,$subject,$content,$mailfrom)){  }else{   echo "送信できませんでした";  }  ?> よろしくお願いします。

    • ベストアンサー
    • PHP
  • mb_send_mail について

     お世話になります。 Linux1.3 + Qmail の構成のメールサーバーとApache1.3+php4の Webサーバーのphp からmb_send_mail関数でメールを飛ばしても受信できません(エラーも出ません) yahooメールなど他のところへは問題なく飛ばせるのですが 同じネットワーク内のドメインに対してはメールが出せない状態です。 メールソフトからの送信では問題ありません。 何か解決法はありますでしょうか?

    • 締切済み
    • 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 ・・・・ XPにPHPとアパッチを入れて <?php $mlfr = "xxxx@nifty.com"; $mlto = "xxxx@mail.goo.ne.jp"; mb_internal_encoding("EUC-JP"); $mlsb = "たいとる"; $mlms = "ないよう"; $mlhd = "from: $mlfr\r\n"; mb_send_mail($mlto,$mlsb,$mlms,$mlhd,"-f".$mlfr); ?> を実行してもメールが送られません XPにメールサーバを入れなければならないのでしょうか?

    • ベストアンサー
    • PHP
  • mb_send_mailによるサーバ負荷について

    mb_send_mailを使って、for文で何百件宛てにメールを送信した場合、サーバへの負荷は相当あるのでしょうか?レンタルサーバなので、やめた方がいいでしょうか。

    • 締切済み
    • PHP
  • mb_send_mail()が使えない

    WebからPHPのmb_send_mail関数を使用してメールを送信しようとしていますが、なぜか送信されません。 原因についてお分かりになればお教えください。 また、下記以外に必要な情報があればお教えください。 コマンドライン上でのmailコマンドによるメール送信は可能な状態です。 sendmailの代わりにqmailをインストールしているため、/usr/sbin/sendmailから/var/qmail/bin/sendmailへシンボリックリンクを貼っています。 また、PHPのmail()は"Call to undefined function: mail()"エラーとなりますが、mb_send_mail()ではエラーが発生しません。 ●OS:TurboLinux7 ●言語:PHP4.3.3 ●phpのconfigure時のオプション:  ./configure --with-apxs=/usr/sbin/apxs \  --enable-mbstring ●/usr/local/lib/php.iniのsendmail_path設定:  sendmail_path = /var/qmail/bin/sendmail ●テスト用PHPのソース(実行すると常に「メール送信エラー」になります) <?php $ans = mb_send_mail("メールアドレス","件名","本文"); if ($ans) { print "<P>メール送信完了</P>"; } else { print "<P>メール送信エラー</P>"; } ?>

    • ベストアンサー
    • PHP
  • Xサーバーでセンドメールの使い方

    現在Xサーバーで、PHPでセンドメールを使っての メールフォームを作成したのですが、センドメールが 動きません。 PHPプログラムは動いてるのでプログラムのバグでは ないと思います。 また、php.iniなどの設定ファイルは何も作成していません。 どうしたら使えるようになるでしょうか?

    • 締切済み
    • PHP
  • mb_send_mail()に関しまして

    初めて投稿させて頂きます。 PHPを触り始めて間もない者ですが、よろしくお願い致します。 現在、PHPの勉強を兼ねまして空メールを送るプログラムを作成しております。 フォームにボタンを1つ設け、そのボタンを押下すると指定のあて先に空メールを送るという簡単なものです。 【html内のボタンの設定】 <form name="top" method="post" action="a.php"> <input type="submit" value="空メールを送る"/> </form> 【a.php(正しく送れたかを知るためにメッセージを表示するようにしてあります)】 <html> <head> PHPメールテスト送信 </head> <body> <? $address = '送信先メールアドレス'; $subject = ''; $message = 'PHPからのテストメール'; $header = "Content-Type: text/plain;charset=iso-2022-jp"; mb_language("Japanese"); if(mb_send_mail($address,$subject, mb_convert_encoding($message,"JIS","EUC-JP"),$header))←エラー行 { print("送信成功!!"); } else { print("エラー:送信失敗!!"); } ?> </body> </html> このプログラムを実行すると以下のエラーが発生します。 Warning: mb_send_mail() [function.mb-send-mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Program Files\xampp\htdocs\top.php on line 15 参考書を見ながらプログラムを作成したのですが、記述、もしくは設定が関係しているのでしょうか。 分かる方には非常にくだらないことかもしれませんが、ご教授お願い致します。

    • 締切済み
    • PHP
  • mb_send_mal

    mail関数で、日本語の文字化けが起きたので、 mb_language, mb_internal_encoding, mb_send_mailに 変更したのですが、実行が止まってしまいます。 mb_* 関数がないのでエラーになっているようなのですが。 どこかの設定か、インストールもれでしょうか。

    • 締切済み
    • PHP
  • メールフォーム(mb_send_mail)が送信されません。

    mb_send_mailを使ったメールフォームで分からないことが御座いますのでどなたかご教授下さい。 HTMLで入力させた宛先のアドレスにサイトのアドレスを紹介する為に使用するメールフォームです。 以下のソース部の$mlto = 'hoge@hoge.jp';の部分を HTMLより引き継いできた$adにメールを送信したい (イメージ的には $mlto = $ad;) のですが、うまくいきません。 シングルクオテーションが無いからなのか、送信できません。 ちなみに、 $mlto = 'hoge@hoge.jp';のように すれば、普通に送信できます。 どなたかご回答宜しくお願い致します。 PHP4のLINUXのレンタルサーバです。 ソースは以下の通りです。 <?php $ad=$_POST['add']; $mlfr = 'hogehoge@hogehoge.jp'; $mlto = 'hoge@hoge.jp'; $mlsb = 'タイトル'; $mlms = 'サイトのアドレス'; $jcph = '.'; mb_send_mail($mlto, $mlsb, $mlms, $mlfr); header("Location: ok.html"); ?>

    • ベストアンサー
    • PHP
  • mb_send_mailと送信日時

    mb_send_mailで送ったメールの送信日時が 9時間後の未来になってしまいます。 どこかの設定を忘れてるのでしょうか? coreserverのレンタルサーバーを使っています。 宜しくお願い致します。

    • 締切済み
    • PHP