• ベストアンサー

PHPからメールを送る@さくらインターネット

PHPを利用して、メールを送れません。 PHP4.3.10を使っています。レンタルサーバーとして、さくらインターネットのレンタルサーバー(プレミアム)を利用しています。 以下のようなスクリプトを書いたのですが、指定されたアドレスにメールが届いた気配がありません。何か、設定したりしないといけないとか、初歩的なミスかと思うのですが、何が悪いのでしょうか? <?php mb_language('Japanese'); mb_send_mail('xxx@xxx.xx.xx','やぁ','届いた?'); ?>

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

  • ベストアンサー
回答No.1

ソースには問題無いはずですが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のログなんかも確認できると良いのですが レンタルサーバーでは無理かもしれません。。。

xojan
質問者

お礼

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

その他の回答 (1)

  • DM9
  • ベストアンサー率37% (43/115)
回答No.2

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

xojan
質問者

お礼

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

関連するQ&A