アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPが使える無料レンタルサーバーで会員管理画面を作ろうとしているものです。だいぶ完成してきて、残りは登録した人に会員登録したことをメールで自動送信することができるようになれば完成というところまできました。無料レンタルサーバーの利用についての説明の中ではsendmailは利用可となっています。私はメール送信のプログラムを作ったことがないので、しきりに本を読みながら悪戦苦闘しております。本の中のサンプルを参考に下のようなソースを書いて、テストしていますがダメでした。
$mailto="*****@***.biglobe.ne.jp";
$mailsbj="新規登録";
$mailbody="登録者ができました";
$mailheader="From:****@yahoo.co.jp\nReply-To:*****@***.biglobe.ne.jp\nX-Mailer:phpversion();"
mb_language("ja");
if(mb_send_mail($mailto,$mailsbj,$mailbody,$mailheader)){
echo "メールの送信に成功";
}
else{
echo "メール送信失敗";
}


利用している無料レンタルサーバ内のsendmailの説明の中には
sendmailのパス:/usr/lib/sendmail
と記入されています。

web上で色々調べてみましたが、どうも今一よくわかりませんでした。mb_send_mailは使えないと言うことでしょうか?
もし、sendmailを使用してメール送信をする場合にはどんなソースを書けばよいのでしょうか。
どなたかご指導宜しくお願いいたします。

A 回答 (2件)

>> テストしていますがダメでした。


>> mb_send_mailは使えないと言うことでしょうか?

「ダメ」とは、エラーがでるということなのか。送信は完了するが送信先に届かないということなのか。あるいは他に異常な現象が起きているのか? それを開示していないので、
アドバイス程度しかできませんが、

1.phpスクリプトの誤記等は無いか確認しましょう
2.phpのメール関係の設定を確認しましょう
 ・php.ini内のsendmail_pathは正しく設定されているか確認する
 ・単純な($mailheaderの無い)パターンで送信できるか確認する
3.mb_send_mailがダメならmail()でも試してみましょう。サンプルは
  http://jp2.php.net/mb_send_mail にも有ります
  mail()では動くなら、mb_language() も確認しましょう
4.それでもダメなら、popenで直接 sendmail を直接使う方法も有ります。

この回答への補足

ありがとうございます。レンタルサーバーでは、エラー表示がでてこないのでどこでエラーになっているのか、分からない状態です。
サーバーの使用のところに、パールのsenndmailのパスが載っていました。調べてみたらphpにはsendmailという関数はないのですね。もしかしたら、そのレンタルサーバーはパールのsendmailが使えるということで、phpではメール送信ができないのかなとちょっとあきらめ気味になっています。

補足日時:2008/09/07 11:36
    • good
    • 0

>> エラー表示がでてこないのでどこでエラーになっているのか、分からない状態です。



厄介なレンタルサーバですね。
perlでsendmailができるならphpからのメールも許可されているはずですので、単純なプログラムのミスが原因だとは思いますが、エラー表示が一切出ないとすると単純なタイプミスさえ原因を追う手段が無くなるのでityounomiさんのおっしゃるとおり諦めるしかないかな。

ただ分からないのが・・
>> テストしていますがダメでした。
エラーも表示されないのにどうしてPHPではダメと判断できたのでしょう。
せめて、元の質問内のスクリプトの結果に何が表示されたのか("メールの送信に成功" or "メール送信失敗" または他の表示)くらいは開示しておくともっと頼りになる人から回答が得られたかもしれませんね。

>> 調べてみたらphpにはsendmailという関数はないのですね

PHPでのメール関数としては、mail()やmb_send_mail()だけですが、
sendmailのパスが分かっているのならシステムコマンドのsendmailをphpから以下ように直接操作する手段も有ります。
$to="*****@***.biglobe.ne.jp";
$body="hogehoge"; //ここにヘッダー込みで本文を書く
SendEmail($to,$body);
function SendEmail($to,$body){
 $mp = popen("usr/lib/sendmail ${to}", "w");
 fputs($mp, $body);
 pclose($mp);
}
他にソケットを使ってメールを送る方法も有りますが、少々敷居が高いです。興味が有ったら検索してみれば例がいっぱい見つかります。

お力になれずに済みませんでした。特殊な設定のサーバを利用しているようなのでレンタル先のサポートに聞くしかなさそうです。
では!
    • good
    • 0
この回答へのお礼

お礼が贈れて申し訳ございませんでした。
できました(^▽^)
phpでも送信できました。
タイプミスでした・・・^^

もっと簡単にデバックできる機能があるエディターが
欲しくなりました。せめてタイプミスを指摘してくれる
ものがあれば、どんなに楽なことなのか。

でも、教えてgooさんには本当にお世話になっております。
感謝の言葉もございません。
私はだれも教えてくれる人がいませんし、かといって
スクールに通うお金もないので独学のみで・・・。
本当に、こころから感謝しております。

壁にぶつかるのは慣れっこですが、何時間も本屋やWEBで
調べても独学では解決できないことがあるんです。
でも、皆さんからのアドバイスが道を開いてくれます。

本当にありがとうございました(^▽^)。

お礼日時:2008/09/14 13:55

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