- ベストアンサー
メール送信フォームの作成方法とエラー対策
- メール送信フォームの作成方法と設定について解説します。
- メール送信フォーム作成時のエラーについて、エラーメッセージと解決方法を紹介します。
- mb_send_mail関数の使い方と設定について説明します。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
>sendmail_fromでme@localhost.com この件なのですが、 http://okweb.jp/kotaeru.php3?q=564411 http://de3.php.net/manual/ja/ref.mail.php このマニュアルを見ると、 sendmail_from string >Windows環境でPHPから送信されるメールにおいて >"From:" に使用する メールアドレスを指定します。 となっていますので、メールが送られない事とはあまり関与しないように思います。 ちなみに当方の設定も同じでした。 ですので、マニュアルに沿ってPHPの設定を見直し、 Linux側でsendmailのできる環境であるか、PATHがどうなっているか を確認されてはいかがでしょうか。 詳しくもないのに長々とお邪魔致しました。 ご参考までに。
その他の回答 (6)
- cojirou
- ベストアンサー率50% (59/117)
私も詳しくはわからないのですが、過去の質問に以下のようなものがありました。 http://okweb.jp/kotaeru.php3?q=860294 http://okweb.jp/kotaeru.php3?q=869145 なので、もしかしたら何らかの設定が足りないのかもしれません。 お力になれなくて申し訳ありません。 ご参考までに。
- cojirou
- ベストアンサー率50% (59/117)
度々失礼致します。 当方では、以下のような感じで正常に動作が確認できました。 //sdmltest.html <html> <body> <form method="POST" action="sdmltest.php"> <table border="1" cellspacing="2" cellpadding="2"> <tr> <td><input type="text" name="from" size=40></td> </tr> <tr> <td > <select name="to"> <option value="---">---</option> <option value="xxx@xxx.co.jp">商品</option> </select> </td> </tr> <tr> <td > <textarea name="message"></textarea> </td> </tr> <tr> <td> <input type="hidden" name="action" value=post> <input type="hidden" name="subject" value="質問"> <input type="submit" name="submit" value="送信"> </td> </tr> </table> </form> </body> </html> //sdmltest.php <?php print_r($_POST); //試しにPOSTの内容を表示 print "<br>"; foreach($_POST as $key => $value) { $$key = $value; } $subject = "testmail"; if( $submit ){ SendMessage(); } else { echo "missing!"; } function SendMessage(){ global $to,$subject,$message,$from; echo $to . $subject . $message . $from . "<br>"; //globalが動いているか確認のため表示 $header = "From: $from"; mb_language("Japanese"); if(mb_send_mail($to, $subject, $message, $header)){ print "メールが送信されました。$to"; } else { print "メールの送信に失敗しました。"; } } ?> 試してみて、POSTもglobalも問題無しなのに、 「失敗しました」 と表示されるようであれば、レス下さると当方も勉強になります。 しつこくすみません。 ご参考までに。
- yusuke2005
- ベストアンサー率14% (1/7)
register_globals register_globalsの値はONになってますか? PHP4.2.x系だとOFFになってるんじゃないでしょうか? $PHP_SELFを$_SERVER['PHP_SELF']にしてもダメですか?
- cojirou
- ベストアンサー率50% (59/117)
><FORM METHOD="POST" ACTION="<?php echo $PHP_SELF; ?>" ENCTYPE="text/plain"> ここを見て、もしかしてと思ったのですが、 質問文のソースは全部一つのスクリプトファイル内の記述ですか? だとしたら、html の部分をsendmail.html として、 php の部分を sendmail.php として、 更に、 ><FORM METHOD="POST" ACTION="<?php echo $PHP_SELF; ?>" ENCTYPE="text/plain"> →action="sendmail.php" として、試してみては。 念のための確認ですので、違っていたら失礼しました。
- cojirou
- ベストアンサー率50% (59/117)
では、確かめて欲しいことを2、3点。 <input type="submit" name="submit" value="送信"> などとして、formの内容を送っていますか? foreach($_POST as $key => $value) { $$key = $value; } などとして、POSTしたデータを受け取っていますか? または、自動でそうなるように設定されていますか? http://okweb.jp/kotaeru.php3?q=1056390 >if($action == "post"){ SendMessage(); } 上の2点がOKであれば、ここは、 if($submit){ SendMessage(); } などとすれば良いと思います。 >global $to,$subject,$meessage,$from; →$message など、タイプミスが見られますので、本文の確認もしてみてください。 参考として、URL載せて置きます。
- cojirou
- ベストアンサー率50% (59/117)
タイプミスが大分あるのですが、それはともかく…。 何ができなくて困ってらっしゃるのでしょうか? 例えば、メールは送られてくるが中身が真っ白とか?? できれば補足お願い致します。
補足
急いでタイプしたのでへんな質問をしていますね、すみません。 メールが送れません、エラーメッセージはでません。
補足
わかりやすいコメント、本当にありがとうございます。 今試しました。 Array ( [from] => xxx@hotmail.com [to] => xxx@hotmail.com [message] => test [action] => post [subject] => 質問 [submit] => 送信 ) で値は取得しました。 メッセージはメールが送信されましたと帰ってきます。 ですがメールが届かないのです、会社のメールアドレスとホットメール両方試しましたが、両方のアドレスに届きません. PHPインフォで気になる所があるのですが sendmail_fromでme@localhost.com と記載されていますが、この意味はこのサーバー意外のメールアドレス宛には送れない?って事でしょうか?