• 締切済み

フォームに記入したデータをメールで受け取る。

こんばんは。PHPをはじめてまだ一ヶ月くらいの素人です。 フォームに入力した情報をメールで受け取るPHPのスクリプトとHTMLを作成してメーラーで確認したところ下記の表示で受け取りました。 apple Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 山田太郎 フォームには名前(山田太郎と記入)と好きな果物(りんごを選択)という項目で作成して情報を得ることができのですが、Mime-Version: 1.0~からのこの3行はの文字列はなんなでしょうか?何か変換などしないといけないのでしょうか? ★フォーム(HTMLソース) <html> <head> </head> <body> <form method="POST" action="post2_1.php"> 名前<br> <input type="text" name="name" size="15"><br> 好きな果物<br> <input type="radio" name="food[]" value="orange">オレンジ <input type="radio" name="food[]" value="apple">りんご <input type="radio" name="food[]" value="strawberry">いちご<br> <input type="submit" value="送信"> </form> </body> </html> ★PHP(スクリプト) <?php $to='×××××××@○○○.jp'; $subject='テストメール'; if(mb_send_mail($to,$subject,$_POST["name"],$_POST["food"][0])){ print('メール送信に成功しました。'); } else{ print('メール送信に失敗しました。'); } ?> よろしくお願いします。

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

みんなの回答

  • wp_
  • ベストアンサー率54% (132/242)
回答No.2

bool mb_send_mail ( string $to, string $subject, string $message [, string $additional_headers [, string $additional_parameter]] ) 4番目の引数はオプションで、明示的にヘッダを書きたいときに使います。 通常はFromなどの指定を行うために使います。 質問者様のコードの場合ですと >apple ←コレ >Mime-Version: 1.0 >Content-Type: text/plain; charset=ISO-2022-JP >Content-Transfer-Encoding: 7bit > >山田太郎 の「apple」という文字列がヘッダに入っています。(最初の空行までがヘッダです。以降はbody。) たぶんコレ余分です。一見して普通の動作はすると思いますけどね^^; サーバ側で余計なalertが出ているかもしれません。 以下三行は通常のメールヘッダです。 MTAなどが判別を行い、正常に動作させるために必要なものです。 ちなみに、それぞれ ・MIMEのバージョン指定 ・この文はtext/plainで文字コードがiso-2022-jp ・エンコードは7bitベース ということを表しています。SMTPの仕様に書いてあった気もしますが。 Fromがないと正常な動作をしないかもしれませんね。 RFC2821 http://tools.ietf.org/html/rfc2821 Wikipedia SMTP http://ja.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol

参考URL:
http://jp2.php.net/mb_send_mail
  • ma2shin
  • ベストアンサー率41% (69/167)
回答No.1

$_POST["motomail"]= ;//ここにfromにするメールアドレスを記入 $_POST["body"]=$_POST["name"].$_POST["food"][0]; mb_language('Japanese'); mb_internal_encoding("EUC-JP") ; $_POST["mailfrom"]="From:" .mb_encode_mimeheader("送信者の名前") ."<".$_POST["motomail"].">"; mb_send_mail($_POST["to"],$_POST["subject"],$_POST["body"],$_POST["mailfrom"]); 以上でいけると思います。 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 上記は、from(header)を指定しない為と思われます。 PHPのポケットリファレンス等を買われた方がいいと思います。 今後なにかと役に立ちます。

関連するQ&A

  • 確認画面・完了画面・エラー画面が出るメールフォーム

    こんばんは。PHPを習いはじめて1ヶ月ぐらいしか勉強をしていない素人です。 今度仕事でメールフォームを作ることになり、入力画面に入れた情報をメールで受け取るところまではできるのですが、入力画面→確認画面→エラー画面→完了画面のように作りたいのですが、参考書やネットで調べてもいい解説がありませんでした。 下記のソースからこの先どういう作れば希望フォームになるのでしょうか?みなさんの力を貸してください。お願いします。 ★フォーム(HTMLソース) <html> <head> </head> <body> <form method="POST" action="post.php"> 名前<br> <input type="text" name="name" size="15"><br> 好きな果物<br> <input type="radio" name="food[]" value="orange">オレンジ <input type="radio" name="food[]" value="apple">りんご <input type="radio" name="food[]" value="strawberry">いちご<br> <input type="submit" value="送信"> </form> </body> </html> ★PHP(スクリプト) <?php $to='××××@○○○.jp'; $subject='テストメール'; $body="名前:".$_POST["name"]."\n"."好きな果物:".$_POST["food"][0]; if(mb_send_mail($to,$subject,$body)){ print('メール送信に成功しました。'); } else{ print('メール送信に失敗しました。'); } ?>

    • 締切済み
    • PHP
  • HTMLでメールフォームを作成しました。

    HTMLでメールフォームを作成しました。 <table bgcolor="#fff0f5" border="1" width="500" summary="フォーム"> <tr><td> <FORM ACTION="mailto:aaa@bbb?subject=@問合せ" METHOD="post" ENCTYPE="text/plain"> <div class="red25centerB"> <img src="ccc.png" class="middle"> お問合せ </div> <br/> <div >・お名前:<INPUT TYPE="text" NAME="氏名" VALUE=""></div> <br/> <br/> <div>・Eメールアドレス:<INPUT TYPE="text" NAME="mail" SIZE="45" VALUE=""></div>  <br/> <br/> <div>・年齢: <br/> <br/> <INPUT TYPE="radio" NAME="tosi" VALUE="10">10代 <INPUT TYPE="radio" NAME="tosi" VALUE="20">20代 <INPUT TYPE="radio" NAME="tosi" VALUE="30">30代 <INPUT TYPE="radio" NAME="tosi" VALUE="40">40代 <INPUT TYPE="radio" NAME="tosi" VALUE="50">50代 <INPUT TYPE="radio" NAME="tosi" VALUE="60">60代以上 </div> <br/> <br/> <div>・ご質問内容等をお書きください <br/> <br/> <TEXTAREA NAME="問合せ" ROWS="7" COLS="55"></TEXTAREA></div> <br/> <br/> <div><INPUT TYPE="submit" VALUE="送信"> <INPUT TYPE="reset" VALUE="書き直す"></div> </FORM>   <img src="ddd.png" class="middle">一回だけ押してください。 </td></tr> </table> 一部のPCでは、送信をおすと、 このフォームは電子メールを使用して送信されます、このフォームを送信するとアドレスが受信者に公開され、暗号化されずに送信されます。 この操作は取り消しもできます。 と表示されます。そして、OKボタンを押しても、上手く送信されません。 なお、winxpや7で発生しているようですが、メーラーはどちらもoutlookですが、送信トレイにすらメールがありません。 解決方法を教えていただければ幸いです。

  • メールフォームにサブジェクト指定

    プロバイダから用意されているメールフォームCGI■■1■■に サブジェクト指定■■2■■をつけたいのですが、 どういうスクリプトになるのでしょうか。 あとできれば、送信者のメールアドレスが本文とメール送信者の欄、両方に 入るようにしたいのですが。 ■■1■■ <form method="post" action="http://docgi.so-net.ne.jp/cgi-bin2/form.cgi"> <input type="hidden" name="mailto" value="xxxxxxxx@so-net.ne.jp"> お客様のお名前:<br> <input name="name" size=60><br> お客様のメールアドレス:<br> <input name="mailfrom" size=60><br> 資料送付先住所:<br> <input name="address" size=60><br> ご連絡先電話番号:<br> <input name="tel" size=40><br> 感想:<br> <textarea name="body" rows=5 cols=60></textarea><br> 内容確認後、送信ボタンをクリックしてください。<br> <input type="submit" name="ok" value="送信"> <input type="reset" name="reset" value="クリア"> </form> ■■2■■ <input type="hidden" name="subject" value="資料請求"> 初心者です。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • アンケートフォームの作り方

    アンケートフォームを作りたいのですが、以下のプログラムにおいてのoutput.php の作り方がわかりません。最終的には、アンケート結果を出力(最後の質問の見る回数に関しては、これまでの平均をだす)をしたいとおもっています。http://www.standpower.com/php_form.htmlを参考にしてつくってみたもののうまくいきません。というのも、そのページに書かれている質問は1つしかないので、今回のように3つ質問があるとどうすればいいのかわからないからです。どなたか教えていただけないでしょうか? <html> <body> <b>あなたの年齢を教えてください</b> <form method = "post" action = "output.php"><br> <input type = "radio" name = "toshi" value = "1" checked>10代<br> <input type = "radio" name = "toshi" value = "2" >20代<br> <input type = "radio" name = "toshi" value = "3" >30代<br> <input type = "radio" name = "toshi" value = "4" >40代<br> <input type = "radio" name = "toshi" value = "5" >50代<br> <input type = "radio" name = "toshi" value = "6" >60代<br> <input type = "radio" name = "toshi" value = "7" >70歳以上<br><br> <b>お昼によくみる番組は?</b><br> <input type = "radio" name = "type" value = "8" checked>ピンポ<br> <input type = "radio" name = "type" value = "9" >スクランブル<br> <input type = "radio" name = "type" value = "10" >笑っていいとも<br> <input type = "radio" name = "type" value = "11" >おもいっきりいいTV<br><br> <b>週に何回見ますか?</b><br> <input type = "text", name = "test_about_other" maxlength="100"><br><br> <INPUT TYPE="submit" VALUE="送信"> <INPUT TYPE="reset" VALUE="やり直し"<BR><BR> </form> </body> </html>

    • ベストアンサー
    • PHP
  • PHPのお問い合わせフォームが動かない

    「ぶっとびねっと」というレンタルサーバーに以下の2つのファイルをアップしました。 ・contacts.html ・contacts.php しかしフォームに入力後、送信を押してもメールが指定したアドレスに届きません。 なぜでしょうか。。。 ソースを下に貼りますので、ご教授願います。 -----  contacts.html  -------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>メールフォーム</title> </head> <body> <form method="post" action="contacts.php"> お名前:<input type="text" name="namae" /><br /> メールアドレス:<input type="text" name="meado" /><br /> 件名:<input type="text" name="subject" /><br /> お問い合わせ内容:<textarea name="content" cols="50" rows="5"></textarea><br /> <input type="submit" name="submit" value="メール送信" /> </form> </body> </html> ------------------------------------------------------ -----  contacts.php  -------------------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"    /> <title>メールフォーム</title> </head> <body> <?php if ($_POST["submit"] == "メール送信") { mb_language("Ja") ; mb_internal_encoding("UTF-8") ; $mailto="○○○○@hotmail.co.jp"; $subject = $_POST["subject"]; $content = $_POST["content"]; $namae = $_POST["namae"]; $meado = $_POST["meado"]; $mailfrom="From:" .mb_encode_mimeheader($namae) ."<".$meado.">"; mb_send_mail($mailto,$subject,$content,$mailfrom); } ?> <form method="post" action=""> お名前:<input type="text" name="namae" /><br /> メールアドレス:<input type="text" name="meado" /><br /> 件名:<input type="text" name="subject" /><br /> お問い合わせ内容:<textarea name="content" cols="50" rows="5"></textarea><br /> <input type="submit" name="submit" value="メール送信" /> </form> </body> </html> ------------------------------------------------------

    • ベストアンサー
    • PHP
  • phpのシンプルなメールフォーム

    あるサイトにて、単一phpのメールフォームのソースをコピーし、使用としましたが、 設定したメールアドレスに、送信ボタンを押しましたが、 受信されません。  ・送信後、「メールを送信しました」と表示されます。  ・送信のあて先は、何も反応なし。  ・ソースの「●●@●●」はダミーです。 以下ソースです。原因がわかりますでしょうか。ご教授のほどよろしくお願いします。 ―――――――――――――――――――――――――――――――――――― <?php // 送信フラグ $send_flg = false; // エラーメッセージ $err_msg = array(); // 送信ボタンを押した後の処理 if ($_POST["post_flg"]) { // エラー if ($_POST["name"] == "") { $err_msg[] = "「お名前」は必須です"; } if ($_POST["email"] == "") { $err_msg[] = "「メールアドレス」は必須です"; } // エラーが無ければ送信 if (count($err_msg) == 0) { // 宛先 $mail_to = "●●@●●"; // 送信元アドレス $mail_from = "form@example.com"; // 件名 $mail_subject = "メールフォームから送信がありました"; // 本文 $mail_body = ""; $mail_body.= "■お名前\n".$_POST["name"]."\n\n"; $mail_body.= "■メールアドレス\n".$_POST["email"]."\n\n"; $mail_body.= "■コメント\n".$_POST["comment"]; // 送信処理 mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_send_mail($mail_to, $mail_subject, $mail_body, "From: <".$mail_from.">"); $send_flg = true; $_POST = array(); } } ?> <!DOCTYPE HTML> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>メールフォーム</title> </head> <body> <?php // 初期フォーム表示 if (!$send_flg) { ?> <h1>メールフォーム</h1> <?php // エラーメッセージがある場合 if (count($err_msg) > 0) { ?> <p style="color:red;"> <?php foreach ($err_msg as $val) { ?> ※<?php echo $val ?><br> <?php } ?> </p> <?php } ?> <form action="mail.php" method="post"> <p> お名前<br> <input type="text" cols="30" name="name" value="<?php echo $_POST["name"] ?>"><br> </p> <p> メールアドレス<br> <input type="text" cols="30" name="email" value="<?php echo $_POST["email"] ?>"><br> </p> <p> コメント<br> <textarea name="comment" cols="50" rows="10"><?php echo $_POST["comment"] ?></textarea><br> </p> <input type="submit" name="post_flg" value="送信する"><br> </form> <?php // メール送信後の表示 } else { ?> <br><br><br><br>メールを送信しました。<br> <?php } ?> </body> </html> ――――――――――――――――――――――――――――――――――――

    • ベストアンサー
    • PHP
  • HPでフォームメールの送信ができない

    OSはWin xp、サーバーはOCNの「Page ON」を使っています。 メールフォームの設置をしたいのですが、OCNのホームページにある記述では、メールの送信が出来ません。アップロードもしています。 <FORM METHOD="post" ACTION="/cgi-bin/formmail.pl"> <INPUT TYPE="hidden" NAME="recipient" VALUE="???@???.ocn.ne.jp"> [メッセージ]:<INPUT NAME="subject" SIZE="30"><BR> [おなまえ]:<INPUT NAME="name" SIZE="30"><BR> [E-mail]:<INPUT NAME="email" SIZE="30"><BR> <INPUT TYPE="submit" VALUE="送信"> <INPUT TYPE="reset" VALUE="クリア"> </FORM> [メッセージ][おなまえ]のところに記入すると、メールは送信されるときとされないときがあります。 [E-mail]に記入すると送信できません。 送信されない時は、上にFORM MAILとグレーに文字がでてくるだけです。 どこが悪いのでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • PHP+HTMLの確認画面から入力画面に戻る際のデータ保持について質問

    PHP+HTMLの確認画面から入力画面に戻る際のデータ保持について質問致します。 1.入力→2.確認→3.実行の3ページを作成しましたが、 2.確認で入力した値が間違っていた場合、1.入力に戻って訂正する仕様です 私は2.確認の戻るボタンにjavaのhistory.back();を使ったのですが ブラウザやOSにより、戻った際にデータが保持されていない場合があるとの事だったので 他の方法がないかご教授下さい。サンプルコードを書いて頂くと助かります。 以下、作成したコード 1.入力画面(mail.html) <html> <body> <form action="chk.php" method="post"> 件名:<br> <input type="text" name="subject" size="30" value=""><br> 送信者名:<br> <input type="text" name="name" size="30" value=""><br> メールアドレス:<br> <input type="text" name="mail" size="30" value=""><br> 本文:<br> <textarea name="message" cols="30" rows="5"></textarea><br> <br> <input type="submit" value="確認する">&nbsp&nbsp<input type="reset" value="クリア"> </form> </body> </html> 2.確認画面(chk.php) <?php $name = $_POST["name"]; $message = $_POST["message"]; $subject = $_POST["subject"]; $mail = $_POST["mail"]; ?> <html> <body> <form action="send.php" method="post"> 件名:<?php echo $subject; ?><br> 送信者名:<?php echo $name; ?><br> メールアドレス:<?php echo $mail; ?><br> 本文:<?php echo $message; ?><br> <input type="submit" value="これでOK"> &nbsp&nbsp //下記の戻るボタンで戻るとデータ保持をするようにしたい。history.back以外で。 <input type="button" value="戻る" onclick="history.back();"> <input type="hidden" name="name" value="<?php echo $name; ?>"> <input type="hidden" name="message" value="<?php echo $message; ?>"> <input type="hidden" name="subject" value="<?php echo $subject; ?>"> <input type="hidden" name="mail" value="<?php echo $mail; ?>"> </form> </body> </html> 3.送信画面(send.php) <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $message = "名前:" . $_POST["name"] . "\n本文:" . $_POST["message"]; if (!mb_send_mail("hoge@example.com", $_POST["subject"], $message, "From: " . $_POST["mail"])) { exit("メールの送信に失敗しました。"); } ?> <html> <body> <p>メールが送信されました。</p> </body> </html> 初心者ですので、わかりやすい表記をお願い致します。

    • 締切済み
    • PHP
  • フォームから送信されたメールアドレスの表示ですが・・

    スクリプトでメールフォームを設置したのですが、送信されるメールアドレスが下記のように表示されます。クリックしてすぐに返信したいので、アドレスだけ表示されるようにしたいのですが、どうしたらいいかご存知の方がいらっしゃいましたらよろしくお願いします。 <ソース> <INPUT TYPE=HIDDEN NAME="題名" VALUE="フォームメール"><INPUT TYPE=HIDDEN NAME="題名" VALUE="フォームメール"> <FORM ENCTYPE="text/plain" METHOD="POST" ACTION="mailto:***@******.com"><INPUT TYPE=HIDDEN NAME="題名" VALUE="フォームメール">■お名前:<BR> <INPUT TYPE=TEXT NAME="名前" SIZE=40><BR> <BR> ■E-Mail:<BR> <INPUT TYPE=TEXT NAME="e-mail" SIZE=40><BR> <BR> ■性別:<BR> <INPUT TYPE=RADIO NAME="性別" VALUE="男" CHECKED>男性 <INPUT TYPE=RADIO NAME="性別" VALUE="女">女性<BR> <BR> ■お問い合わせ内容:<BR> <TEXTAREA name="メッセージ" rows="7" cols="49"></TEXTAREA><BR> <BR> <INPUT TYPE=SUBMIT VALUE="送信する"> <INPUT type="reset" name="クリア"></FORM> このように表記すると、 題名=フォームメール 名前=***** e-mail=*****@*****.com 性別=男性 メッセージ=これはテストです これはテストです これはテストです これはテストです これはテストです これはテストです これはテストです これはテストです となり、「e-mail=*****@*****.com」がアドレスとなってしまいます。 「e-mail=」が表示されないようにするか、表示されても「e-mail=」がアドレスとして認識されないようにしたいのですが・・・よろしくお願いします。

  • フォームCGIメールについて教えてください

    OCNのPAGE ON のホームページにフォームCGIメールをつけました。 設定例を参考に、そのまま貼り付けたところ、コメントの行数が1行です。 5行くらいにしたいのですが、やり方が分りません。 教えてください。よろしくお願いします。 以下がOCNの設定例です。 <FORM METHOD=\"post\" ACTION=\"/cgi-bin/formmail.pl\"> <INPUT TYPE=\"hidden\" NAME=\"recipient\" VALUE=\"???@???.ocn.ne.jp\"> [題名]:<INPUT NAME=\"subject\" SIZE=\"30\"><BR> [氏名]:<INPUT NAME=\"name\" SIZE=\"30\"><BR> [E-mail]:<INPUT NAME=\"email\" SIZE=\"30\"><BR> [コメント]:<INPUT NAME=\"comment\" SIZE=\"30\"><BR> <INPUT TYPE=\"submit\" VALUE=\"送信\"> <INPUT TYPE=\"reset\" VALUE=\"クリア\"> </FORM>