無料レンタルサーバーでsendmailを使ってメール送信する方法

このQ&Aのポイント
  • PHPが使える無料レンタルサーバーで会員管理画面を作ろうとしています。sendmailを使用してメール送信をする方法について教えてください。
  • sendmailのパスは「/usr/lib/sendmail」ですが、具体的なソースコードがわかりません。mb_send_mailではなくsendmailを使用してメール送信を行いたいです。
  • 無料レンタルサーバーの利用についての説明ではsendmailは利用可となっていますが、具体的な実装方法がわかりません。sendmailを使用したメール送信のソースコードを教えてください。
回答を見る
  • ベストアンサー

mb_send_mail sendmailについて

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を使用してメール送信をする場合にはどんなソースを書けばよいのでしょうか。 どなたかご指導宜しくお願いいたします。

  • PHP
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> エラー表示がでてこないのでどこでエラーになっているのか、分からない状態です。 厄介なレンタルサーバですね。 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); } 他にソケットを使ってメールを送る方法も有りますが、少々敷居が高いです。興味が有ったら検索してみれば例がいっぱい見つかります。 お力になれずに済みませんでした。特殊な設定のサーバを利用しているようなのでレンタル先のサポートに聞くしかなさそうです。 では!

ityounomi
質問者

お礼

お礼が贈れて申し訳ございませんでした。 できました(^▽^) phpでも送信できました。 タイプミスでした・・・^^ もっと簡単にデバックできる機能があるエディターが 欲しくなりました。せめてタイプミスを指摘してくれる ものがあれば、どんなに楽なことなのか。 でも、教えてgooさんには本当にお世話になっております。 感謝の言葉もございません。 私はだれも教えてくれる人がいませんし、かといって スクールに通うお金もないので独学のみで・・・。 本当に、こころから感謝しております。 壁にぶつかるのは慣れっこですが、何時間も本屋やWEBで 調べても独学では解決できないことがあるんです。 でも、皆さんからのアドバイスが道を開いてくれます。 本当にありがとうございました(^▽^)。

その他の回答 (1)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

>> テストしていますがダメでした。 >> 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 を直接使う方法も有ります。

ityounomi
質問者

補足

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

関連するQ&A

  • mb_send_mailに関して

    環境:Windows2008 Server R2 64bit/php5.3.22 教えて下さい。 Windows2008 Server R2 64bit 環境にてPHPを動作させ、mb_send_mail()関数を使って メールを送信しようと考えています。 PHPも問題なく動き、mb_send_mail()関数用にphp.ini も以下のようにメンテナンスし、記述も 問題ないかと思われますが、メールの送信ができません。。。 64bitでは何か設定が違うのでしょうか? 教えて頂きたいと思います。 《php.ini》   [mail function]  For Win32 only.          ← 32bit only とわざわざ記述がある為、64bit ではNG?  http://php.net/smtp  SMTP = XXXXXX  http://php.net/smtp-port  smtp_port = 25  For Win32 only.  http://php.net/sendmail-from  sendmail_from = XXX@XXX.co.jp 《記述内容》  <?php  $mailto = "XXX@XXX.co.jp";  $subject = "掲示板";  $content = "新規投稿がありました。 ☆☆☆";  $mailfrom = "From:mail@colcoat.co.jp";  mb_language("ja");  mb_internal_encoding("UTF-8");  if(mb_send_mail($mailto,$subject,$content,$mailfrom)){  }else{   echo "送信できませんでした";  }  ?> よろしくお願いします。

    • ベストアンサー
    • PHP
  • mb_send_mailでUTF8なメールを送信した際に、受け取り側で文字化けする可能性は?

    PHPスクリプトも、MySQLもUTF8で作成し、次のmb_send_mailでUTF8な メールを送信した場合、受け取り手側で日本語が文字化けするリスクは どの程度でしょうか?(特殊文字や外国語フォントは例外として、 あくまで日本語フォントが、です) 理屈上は、受け取り手のメーラーがUTF8の受信に対応していなければ NGということなのでしょうが。 $mailto = "from@example.com"; $mailsbj = "件名"; $mailbody = "本文\r\n"; //メールで扱う言語をUTF-8に設定 mb_language('uni'); mb_internal_encoding("UTF-8"); $fromname = "差出人名"; $fromname = mb_encode_mimeheader($fromname); $headers = "From: \"" . $fromname . "\" <from@example.com>" . "\n"; //メール送信 mb_send_mail($mailto, $mailsbj, $mailbody, $headers);

    • ベストアンサー
    • PHP
  • mb_send_mail()が使えない

    WebからPHPのmb_send_mail関数を使用してメールを送信しようとしていますが、なぜか送信されません。 原因についてお分かりになればお教えください。 また、下記以外に必要な情報があればお教えください。 コマンドライン上でのmailコマンドによるメール送信は可能な状態です。 sendmailの代わりにqmailをインストールしているため、/usr/sbin/sendmailから/var/qmail/bin/sendmailへシンボリックリンクを貼っています。 また、PHPのmail()は"Call to undefined function: mail()"エラーとなりますが、mb_send_mail()ではエラーが発生しません。 ●OS:TurboLinux7 ●言語:PHP4.3.3 ●phpのconfigure時のオプション:  ./configure --with-apxs=/usr/sbin/apxs \  --enable-mbstring ●/usr/local/lib/php.iniのsendmail_path設定:  sendmail_path = /var/qmail/bin/sendmail ●テスト用PHPのソース(実行すると常に「メール送信エラー」になります) <?php $ans = mb_send_mail("メールアドレス","件名","本文"); if ($ans) { print "<P>メール送信完了</P>"; } else { print "<P>メール送信エラー</P>"; } ?>

    • ベストアンサー
    • PHP
  • PHP でmb_send_mailが上手くいかない

    PHP初心者です。現在、自分のパソコンにXAMPPをインストールして、 Apacheを起動し、PHPのサンプルを勉強しいています。 mb_send_mail自体はTRUEで返ってくるのに、メーラーには何も届きません。 書籍やネットにあったサプルをいろいろ調べたのですが、 みな、同じ現象です。 php.iniの設定は下記の通りです。(phpは5.4.7) [mail function] ; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury SMTP = localhost smtp_port = 587  <----25にしても変わりませんでした。 ; For Win32 only. http://php.net/sendmail-from sendmail_from = postmaster@localhost PHPのソース <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); if (mb_send_mail("cy0***@md.point.ne.jp", "テストメール", "これはテストです。", "From: chibikind***@yahoo.co.jp")) { echo "メールが送信されました。"; } else { echo "メールの送信に失敗しました。"; } ?>

    • 締切済み
    • PHP
  • mb_send_mailでのメール送信がエラーしてしまいます。

    PHPを独習しています。 mb_send_mailでのメール送信でつまづいてしまっており、 ご回答いただければ幸いです。 mb_string等の設定は正常に出来ていると思うのですが、 下記のとおり、mailserverに接続できない旨のエラーが 表示されてしまいます。 ●エラー本文 Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "(契約サーバー)" port 465, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Program Files\Apache Group\Apache2\htdocs\sample\Part4\4-8\4-8-1.php on line 11 ●PHP本文 $mailto = "(自分のアドレス)"; $subject = "test"; $content = "本文test"; $mailfrom = "From:aaaa@bbb.ccc"; $mailfrom="From:" .mb_encode_mimeheader("木村") ." <ddd@eee.fff>"; if (mb_send_mail($mailto,$subject,$content,$mailfrom)){ echo "送信成功"; }else{ echo "送信失敗"; もしお分かりになる方がいれば、 どうかご教授のほど、よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpからのメール送信が文字化け

    phpでメールを送信できるようなりましたが、メールは無事に送信されるのですが、OutLookで受信すると文字化けしてしまいます。色々調べたんですがどうも解決できません。 phpのtextエディターはUTF-8設定にして記入しました。メールソフト(OutLook)受信のエンコードは色々試したのですが、文字化けしてしまいます。 どのように文字設定をすると文字化けしないのでしょうか。 「テスト」と言う文字を送信すると「eXg」となり表示されます。 よろしくご指導お願いいたします。 <?php $mailto="*******@yahoo.co.jp"; $mailsbj="テスト"; $mailbody="テスト"; $mailheader="From:*******@***.biglobe.ne.jp\nReply-To:*******@yahoo.co.jp\nX-Mailer:PHP/".phpversion(); mb_language("ja"); mb_internal_encoding("UTF-8"); ?>

    • ベストアンサー
    • PHP
  • mb_send_mailによるサーバ負荷について

    mb_send_mailを使って、for文で何百件宛てにメールを送信した場合、サーバへの負荷は相当あるのでしょうか?レンタルサーバなので、やめた方がいいでしょうか。

    • 締切済み
    • PHP
  • mb_send_mailと送信日時

    mb_send_mailで送ったメールの送信日時が 9時間後の未来になってしまいます。 どこかの設定を忘れてるのでしょうか? coreserverのレンタルサーバーを使っています。 宜しくお願い致します。

    • 締切済み
    • PHP
  • mb_send_mailでメール送信できない

    次のようなコードを使っているのですが、メールも送信できていません。 error_reportingでエラーをチェックしようとしても何も表示されません。 ブラウザには false しか表示されません。 サーバーはxserber,php5.3を利用しています。 メールアドレスの変更、サブジェクトを空、ボディを空、など試してみましたが、 falseのままで一度も成功しません。 phpファイルはUTF-8で作成しています。 ずっと悩んでいます。よろしくお願いします。 function sendMail( $to, $subject, $body ){ error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); //言語設定、内部エンコーディングを指定する mb_language("japanese"); mb_internal_encoding("UTF-8"); $from = FROM_MAIL; //送信 if( mb_send_mail($to,$subject,$body,"From:".$from) ) echo "true"; else echo "false"; }

    • ベストアンサー
    • PHP
  • if( mb_send_mail( ・・・) ) {・・・} とするとメールが送信されてしまいます

    下記のようにすると同じメールが2発送信されてしまいます。 ("当たり前だ!" と言われそうですが) if( $reqmailad != "" ){ mb_send_mail( $reqmailad, $subject, $body, $header ); } if( mb_send_mail( $reqmailad, $subject, $body, $header ) ){ echo "${reqmailad} 宛にメールを送信しました。"; } 「$reqmailad != ""」 ならばメールを送信し、メール送信を確認の上、 「echo "${reqmailad} 宛にメールを送信しました。";」 とやりたい(メール送信は1発だけ)のですが、未熟者の私にはその方法がわかりません。 なにとぞお助けくださいませ。

    • ベストアンサー
    • PHP

専門家に質問してみよう