電子書籍の厳選無料作品が豊富!

PHPを利用して、メールを送れません。

PHP4.3.10を使っています。レンタルサーバーとして、さくらインターネットのレンタルサーバー(プレミアム)を利用しています。

以下のようなスクリプトを書いたのですが、指定されたアドレスにメールが届いた気配がありません。何か、設定したりしないといけないとか、初歩的なミスかと思うのですが、何が悪いのでしょうか?
<?php
mb_language('Japanese');
mb_send_mail('xxx@xxx.xx.xx','やぁ','届いた?');
?>

A 回答 (2件)

ソースには問題無いはずですがEUCで保存されてますよね?



考えられる問題は
・その他の引数が入っていない(通常は必要なものは補完されますので必要ありませんが)
 念のため指定してはどうでしょうか。
 どこかのMLリストでReturnpathヘッダーを付けたら送信できた。という
 スレッドを見たことがあります。
 サーバー側で差出人なしのメールを破棄しているかもしれません。
 通常はphp.ini内のsendmail_from欄を参照し
 NULLであればroot@サーバー名 になるはずです。

・マルチバイト関数が有効になっていない
 PHPのconfigure時に--enable-mbstring が有効になっていないと利用できないはずです。
 phpinfo()関数を実行してmbstring項目の該当値がenableになっていなければいけません。
 もっとも、この場合はエラーを吐くはずなんですが・・・

・php.iniの設定でsendmailへのpath設定されていない
 あり得ないとは思いますがsendmailへのpathが設定されていない可能性があります。
 コレばかりはサーバー管理者しか設定できませんので管理者に連絡するしかありません。
 通常は自動認識してくれるはずなんですが・・・
この時もエラーを吐いてくれるはず。

もしマルチバイト系が利用できないのであれば自分で適切にエンコーディングして
mail()を使って送信するしかないですね。
mb_send_mail()は自動的にエンコーディングを行いmail()に投げてくれる関数ですから。

なにかエラーメッセージは表示されていませんか?
念のためmb_send_mailを実行したときにTrueが返ってきているか
確認してください。

<?php
if(mb_language('Japanese')){
echo "languageはJapaneseに設定されました。<BR>";
}else{
echo "languageはJapaneseに設定できませんでした<BR>";
}

if(mb_send_mail('xxx@xxx.xx.xx','やぁ','届いた?')){
echo "正常に処理されました。<BR>";
}else{
echo "正常に処理されませんでした。<BR>";
}
?>

MTAのログなんかも確認できると良いのですが
レンタルサーバーでは無理かもしれません。。。
    • good
    • 0
この回答へのお礼

試行錯誤してみた結果、驚くべきことに、
さくらインターネットによって設定されていた、php.iniのsendmailへのパスの初期値が、間違っていました。
ご迷惑をおかけしました。どうもありがとうございました。

お礼日時:2006/01/13 21:43

さくらインターネットのことは知らないのですが、mbstringのモジュールは入ってますか。

    • good
    • 0
この回答へのお礼

どうもありがとうございました。解決しました

お礼日時:2006/01/13 21:42

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