- ベストアンサー
phpでmb_send_mailを用いてメールの送信を試みておりますが、うまくいきません
phpでmb_send_mailを用いてメールの送信を試みておりますが、うまくいきません。 php.iniの現時点における設定は、以下の通りです。 [mail function] ; For Win32 only. ;SMTP = localhost ;smtp_port = 25 ; For Win32 only. ;sendmail_from = ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). sendmail_path = "sendmail -t -i" mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; mbstring.func_overload = 0 ;mbstring.strict_encoding = Off なお、phpのスクリプトでは、mb_send_mail関数を呼ぶ直前に、 mb_language("ja"); mb_internal_encoding("utf-8"); を実行しております。 また、html部では、<meta…タグにおいて、charset=UTF-8の宣言を行い、 このhtml部を含むphpファイルは、文字コードUTF-8にて格納し直しました。 原因をいろいろ探ったのですが、自力では無理のようです。 原因と考えられる点をどうか教えて頂くようにお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
25番のファイアーウォールのポートが開いてないとか? プロバイダーがメールサーバーをたてれないように25ポートをブロックしているとか?
その他の回答 (2)
- Suzi
- ベストアンサー率38% (130/334)
if (mb_send_mail($mailto, $mailsbj, $mailbody, $mailheader)) { ↓ if (mb_send_mail($mailto, $mailsbj, $mailbody, $mailheader) == true) { にしたらどうでしょうか。
補足
早速回答頂き、ありがとうございます。 教えて頂いたように、 比較演算子==を用いてみましたが、 症状はかわりませんでした。 ところで、申し遅れましたが、サーバのOSはFreeBSD 6.1です。 sendmail_pathの設定は、UNIX用のデフォルト値として "sendmail -t -i"に設定していますが、 これでよいかどうか、調べる方法が分からず、 こちらもネットであれこれ探しております。 この点は、全く問題ないでしょうか。
- kalze
- ベストアンサー率47% (522/1092)
>phpでmb_send_mailを用いてメールの送信を試みておりますが、うまくいきません。 なにがどううまくいかないのか? うまくいかない処理のソースを書いてください。 それがどのようにうまくいかないのかエラー内容や現象を詳しく書いてください。
補足
失礼致しました。 質問の内容が不十分でしたので、以下に補足させて頂きます。 ソースの該当部分の抜粋は、以下の通りです。 <?php 中略 $mailto = "送信先メールアドレス"; $mailsbj = "メールのタイトル"; $mailbody = "メール本文"; mb_language("ja"); mb_internal_encoding("utf-8"); if (mb_send_mail($mailto, $mailsbj, $mailbody, $mailheader)) { $msg = "送信完了<BR>"; } else { $msg = "送信失敗<BR>"; { ?> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Style-Type" content="text/css"> </HEAD> <BODY> <?=$msg?> </BODY> </HTML> (1) $mailto、$mailsbj、$mailbodyは何れも、正常に引き渡されていることを確認しました。 (2) 「うまくいかない」とは、ブラウザ画面上に、上記「送信完了」ではなく「送信失敗」と表示されてしまう…とのことです。 (3) 現時点では、php.iniにあるメール送信・mbstring関連の設定の確認のほか、どのような観点・視点で原因を探ればよいか分からないため、今回質問をさせて頂きました。 以上、よろしくお願い致します。
お礼
お手数をかけ、また大変お騒がせ致しました。 おかげさまで、解決致しました。 原因は、php.iniの項目sendmail_pathの設定の誤りでした。 サーバ情報、phpinfo()でパスを確認し、 以下の通りに設定することで、解決致しました。 sendmail_path = "/usr/sbin/sendmail -t -i" サーバのOSがunix系であると漠然と認識していたため、 「具体的にはFreeBSD 6.1であって、 しかも、sendmail_path の設定がサーバによって異なる」 点に気が付くのが遅かったようです。 ありがとうございました。 今後ともよろしくお願い致します。