• ベストアンサー

サーバーによっては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