プロが教えるわが家の防犯対策術!

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にて格納し直しました。

原因をいろいろ探ったのですが、自力では無理のようです。
原因と考えられる点をどうか教えて頂くようにお願い致します。

A 回答 (3件)

25番のファイアーウォールのポートが開いてないとか?


プロバイダーがメールサーバーをたてれないように25ポートをブロックしているとか?
    • good
    • 0
この回答へのお礼

お手数をかけ、また大変お騒がせ致しました。
おかげさまで、解決致しました。

原因は、php.iniの項目sendmail_pathの設定の誤りでした。

サーバ情報、phpinfo()でパスを確認し、
以下の通りに設定することで、解決致しました。
sendmail_path = "/usr/sbin/sendmail -t -i"

サーバのOSがunix系であると漠然と認識していたため、
「具体的にはFreeBSD 6.1であって、
しかも、sendmail_path の設定がサーバによって異なる」
点に気が付くのが遅かったようです。

ありがとうございました。
今後ともよろしくお願い致します。

お礼日時:2007/12/01 09:56

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"に設定していますが、
これでよいかどうか、調べる方法が分からず、
こちらもネットであれこれ探しております。

この点は、全く問題ないでしょうか。

補足日時:2007/12/01 01:44
    • good
    • 0

>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関連の設定の確認のほか、どのような観点・視点で原因を探ればよいか分からないため、今回質問をさせて頂きました。

以上、よろしくお願い致します。

補足日時:2007/12/01 00:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!