• ベストアンサー

phpでメール送信できません 原因がわかりませんので教えてください

送信ボタンを押すと以下のエラーがでます Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\sendmail.php on line 12 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\sendmail.php:12) in C:\xampp\htdocs\sendmail.php on line 13 1.php.ini の設定は下記のとおりです。正しいでしょうか? [mail function] ; For Win32 only. SMTP = smtp.kss.biglobe.ne.jp smtp_port = 25 ; For Win32 only. sendmail_from = ・・・・@kss.biglobe.ne.jp xampで一括インストールしましたが5php.ini は 変更必要ですか?上記のように変更してしまいましたが。その他設定が必要なところはありますか。 2つのphpファイル リスト1  ・mail_input.php    <html><head></head><body> <form method="POST" action="sendmail.php"> <input type="hidden" name="_email" value="自分のアドレス"/> <input type="hidden" name="_subject" value=""/> <input type="hidden" name="_result" value="<?php print($_SERVER['PHP_SELF']);?>"/> <table border="0"><tr> <th align="right">名前:</th> <td><input type="text" name="name" size="20"/></td></tr><tr> <th align="right">E-Mail:</th> <td><input type="text" name="_from" size="50"/></td> </tr><tr><th align="right">自由記入欄:</th> <td><textarea name="memo" cols="50" rows="5"/></textarea></td> </tr></table> <input type="submit" value="送信"/> <input type="reset" value="クリア"/></body></html> 「自分のアドレス」部分は受信したいアドレスをいれれば宜しいでしょうか?テストの場合でしたら自分の自宅のアドレスなど。それ以外に変更すべきところがありますか。 リスト2・sendmail.php    <?php $header_info="From: ".$_POST['_from']." \nContent-Type:text/plain;charset =ISO-2022-JP\nX-Mailer:PHP/".phpversion(); $body="■■".$_POST['_subject']."■■\n\n"; foreach($_POST as $key=>$value){ if(!strstr($key,"_")){ $body.="[".$key."]".$value."\r\n"; } } mb_send_mail($_POST['_email'],$_POST['_subject'] ,$body,$header_info); header("Location: ".$_POST['_result']); ?> ?リスト2の「 mb_send_mail 」の後に自分のアドレスとか実際は入れる必要がありますか?例えば ($_POST['abcd@hotomail.co.jp']みたいに。 自分のメールアドレス宛に送信されるようにテストしてますが一番上に記したエラーがでてしまい、送れません。素人なので細かくわかりやすく説明していただくとたいへん助かります。 上記のファイルは本を移しただけなので変更するべきところがありますか phpを使ってお問い合わせのページができることをめざしており、とりあえず自宅でテストをしてる状況です。よろしくお願いします。 自宅はbiglobe でネットやメールをしてます。

  • PHP
  • 回答数6
  • ありがとう数6

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

  • ベストアンサー
  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.6

> Warning: mb_send_mail() [function.mb-send-mail]: > Failed to connect to mailserver at "smtp.mail.biglobe.ne.jp" 「smtp.mail.biglobe.ne.jp」というのは smtp は付加せずに 「mail.biglobe.ne.jp」ではないのでしょうか? # SMTP サーバは別に伏字にする必要もないですから、 # そのままだと思いますので。

その他の回答 (5)

  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.5

> 現在のエラーです 以前と変わりました 2つです このエラー(警告)の英語を訳して確認してみましたか? # 英語が苦手なのであれば辞書をお使いになって訳してみてはいかが # でしょうか? 訳し方にはかなり癖がありますが自動翻訳サイトも # あります。 > Warning: mb_send_mail() [function.mb-send-mail]: > Failed to connect to mailserver at "localhost" port 25, > verify your "SMTP" and "smtp_port" setting in php.ini > or use ini_set() in C:\xampp\htdocs\sendmail.php on line 9 前回と同様に「localhost のポート 25 に接続に失敗した」と言う意味です。 それと「php.ini や ini_set() 関数の SMTP や smtp_port の設定を検証 (確認)しなさい」と言う意味です。 > Warning: Cannot modify header information - headers already sent by > (output started at C:\xampp\htdocs\sendmail.php:9) > in C:\xampp\htdocs\sendmail.php on line 10 これも前回と同様ですが、あなたが仰るように sendmail.php が正しい のであれば、先のエラー(但し warning とは警告の意味)のメッセージを 出していることで HTTP ヘッダが書き出せないということだと思います。 > Apacheの再起動とはXAMPPコントロールパネルの更新ボタンを > 押せばよろしいでしょうか。 そうではなくて「停止」を押して「起動」をするのです。 > phpinfo() を確認しました。 > Loaded Configuration File 「c:\xampp\apache\bin\php.ini」です それで合っています、その「php.ini」を書き替えるのです。 「c:\php\php.ini」は Apache(mod_php5) からは使われていません。 ちなみに PHP Switch を使ったりすると置き換わってしまいます。 ここに説明がありますので読んでください。 http://localhost/xampp/phpswitch.php ※ php4 と php5 を切り替えるためのものです。   意味が判らない場合は php switch を実行してはいけません。   また php4 を使うと MySQL で不具合が発生することがあります。 >  PHP Core > short_open_tag On On > SMTP localhost localhost > smtp_port 25 25 > 上記のこの状況は正しいのでしょうか? 正しくありません、「c:\xampp\apache\bin\php.ini」を書き替えした 内容になっていません。 前述した正しい方法で Apache を再起動して下さい。 まだエラーが出るかも知れませんが、またその時にご質問なさって ください。

mem74891
質問者

補足

言われたとおりやりましたらphpinfo() に反映されましたのでうまくいきました。 sendmail_from    自分のアドレス   自分のアドレス sendmail_path     no value     no value serialize_precision    100       100 short_open_tag       On        On SMTP     smtp.mail.biglobe.ne.jp   smtp.mail.biglobe.ne.jp smtp_port          25        25 しかし前回と同じエラーがまだ出てしまいます。 Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "smtp.mail.biglobe.ne.jp" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\sendmail.php on line 9 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\sendmail.php:9) in C:\xampp\htdocs\sendmail.php on line 10 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー (1) POP before SMTP (2) SMTP AUTH (3) Outbound Port25 Blocking   (接続しているプロバイダの SMTP であれば関係ないと思います) 仰るとおり上記の設定に問題があるのでしょうか。 自分でも調べましたがどこを変更すれば良いかわかりませんでした。 確認すべきところはありますでしょうか。 お忙しいところすみませんがアドバイスいただけると大変助かります。 よろしくお願いします。

  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.4

ANo.1 補足部分からの引用 > やりましたが変化ありません。 念のため改めてお使いの環境を書いて頂けませんでしょうか? OS、XAMPP のバージョン、インストール先等 それと php.ini や PHP スクリプトを編集しているテキストエディタ等。 そうでないと適切なアドバイスをするのが容易ではありません。 エラーメッセージからすると XAMPP かと思われるので php.ini について 次のような確認方法で良いと思います。 http://localhost/xampp/phpinfo.php にアクセスして phpinfo() を 確認してみて下さい。 Loaded Configuration File  (ここの文字) おそらく「c:\xampp\apache\bin\php.ini」だと思われます、その ファイルを必ずどこかにバックアップをした後で編集して下さい。 編集後に Apache の再起動を行い Loaded Configuration File に示されているファイル名が同じか もう一度確認して下さい。 その表示から何行か下に Configuration  PHP Core という項目の下に表があるので、次の箇所が反映されているか 確認して下さい。 Directive   Local Value Master Value (略) SMTP     (ここの文字)    (ここの文字) smtp_port  (ここの文字)    (ここの文字) この設定がうまくいけばメールを送ることが可能になります。 その後に起きる問題はインターネットサービスプロバイダに依存される ことです。 メール送信に関して考えられる問題は (1) POP before SMTP (2) SMTP AUTH (3) Outbound Port25 Blocking   (接続しているプロバイダの SMTP であれば関係ないと思います) などが考えられます。 もし、そのような問題が発生したらまたご質問なさってください。 > 最初の質問のとおり 1行目から <?php ではじまり > 何も記載されていない行はありません。 はい、わかりました。しかしご提示なされたエラーメッセージから しか判断できません、エラーメッセージの意味がそうなのです。 sendmail.php に関しては「<?php」の前には行だけではなく文字も 入れてはいけません。

mem74891
質問者

補足

現在のエラーです 以前と変わりました 2つです Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\sendmail.php on line 9 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\sendmail.php:9) in C:\xampp\htdocs\sendmail.php on line 10 環境です  windows 2000  XAMPP Windows版 1.6.6a テキストエディタ Tera PAD 質問です。Apacheの再起動とはXAMPPコントロールパネルの更新ボタンを押せばよろしいでしょうか。 ​http://localhost/xampp/phpinfo.php​ にアクセスして phpinfo() を 確認しました。 Loaded Configuration File 「c:\xampp\apache\bin\php.ini」です  PHP Core short_open_tag On On SMTP localhost localhost smtp_port 25 25 上記のこの状況は正しいのでしょうか? 現在 [mail function] ; For Win32 only. SMTP = smtp.kss.biglobe.ne.jp smtp_port = 25 ; For Win32 only. sendmail_from = aaaa@kss.biglobe.ne.jp php.iniのファイルはc¥xampp¥apache¥bin¥php.ini これを変更すれば宜しかったでしょうか。今上記のように変更してあります。 c¥xampp¥php¥php.ini ここにも同じ名前のファイルがありますがこれも 上記のように変更してよかったですか。今は上記のように変更してあります。 mail_input.php <html> <head> <title>10日でおぼえるPHP5入門教室(アンケート)</title> </head> <body> <h1 style="background:#cccccc"> 10日でおぼえるPHP5入門教室(アンケート)</h1> <form method="POST" action="sendmail.php"> <input type="hidden" name="_email" value="ryo-y-ank@kss.biglobe.ne.jp" /> <input type="hidden" name="_subject" value="10日でおぼえるPHP5入門教室" /> <input type="hidden" name="_result" value="<?php print($_SERVER['PHP_SELF']);?>" /> <table border="0"> <tr> <th align="right">名前:</th> <td><input type="text" name="name" size="20" maxlength="30" /></td> </tr><tr> <th align="right">E-Mail:</th> <td><input type="text" name="_from" size="50" maxlength="255" /></td> </tr><tr> <th align="right" valign="top">自由記入欄:</th> <td><textarea name="memo" cols="50" rows="5"></textarea></td> </tr> </table> <input type="submit" value="送信" /> <input type="reset" value="クリア" /> </form> </body> </html> sendmail.php    <?php $header_info="From: ".$_POST['_from']."\nContent-Type: text/plain;charset=ISO-2022-JP\nX-Mailer: PHP/".phpversion(); $body="■■".$_POST['_subject']."■■\n\n"; foreach($_POST as $key=>$value){ if(!strstr($key,"_")){ $body.="[".$key."]".$value."\r\n"; } } mb_send_mail($_POST['_email'],$_POST['_subject'],$body,$header_info); header("Location: ".$_POST['_result']); ?> すごく悩んでいてとにかく今の状況から打開したいです。知識がなくて 申し訳ありませんがx415f484fさんアドバイスお願い致します。 よろしくお願いします。

  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.3

訂正です、大変失礼致しました。 誤 > mb_send_mail($_POST['_email'],$_POST['_subject'], > $body,$header_info, 'abcd@hotomail.co.jp'); 正 mb_send_mail($_POST['_email'],$_POST['_subject'], $body,$header_info, '-f abcd@hotomail.co.jp'); となります。 sendmail に渡すパラメータですので '-f abcd@hotomail.co.jp' と しなければいけません。申し訳ありませんでした。

  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.2

※ 先ほど記述し忘れておりましたので。 > <input type="hidden" name="_email" value="自分のアドレス"/> (略) > 「自分のアドレス」部分は受信したいアドレスをいれれば宜しいでしょうか? それでよろしいかと思います。 > リスト2の「 mb_send_mail 」の後に自分のアドレスとか実際は入れる > 必要がありますか? bool mb_send_mail ( string $to , string $subject ,   string $message [, string $additional_headers [, string $additional_parameter ]] ) この $additional_parameter のことでしょうか? Return-Path の指定があると送信したメールが宛先不明などのエラーの 場合にエラーメールを返してもらえるので入れておくことをお薦めします。 > 例えば ($_POST['abcd@hotomail.co.jp']みたいに。 これは違います。 $_POST[] というのはフォームの値がデコードされたものが入るのです。 <input type="hidden" name="_subject" value=""/> この name="_subject" の _subject をキーとして value の値を得る ことに使います。 $_POST['_subject'] というような使いかたです。 ですから mb_send_mail($_POST['_email'],$_POST['_subject'], $body,$header_info, 'abcd@hotomail.co.jp'); とします。 ANo.1 から引用 > sendmail.php はエンコードを JIS(ISO-2022-JP) して保存して下さい。 > ただし場合によっては文字が化ける可能性があると思われます。 サブジェクトや送信者名に全角文字が使われている時は MIME エンコードが必要になります。(メールアドレスはエンコードしては いけません) エンコードに関しては、私が以前回答させて頂いたものがあるので こちらの URL を参照して下さい。 http://oshiete1.goo.ne.jp/qa3887913.html # 蛇足の部分なのですが。

mem74891
質問者

補足

bool mb_send_mail ( string $to , string $subject ,   string $message [, string $additional_headers [, string $additional_parameter ]] )   上記の記述は自分の作ったファイルには存在しませんがこのように追加すべきですか?もしくは変更すべきですか?もし変更するのならどの部分を削ってどの部分に挿入すれば良いか教えていただけませんでしょうか。 私としては とにかく自分のメールアドレスにメールを届けたいので自分の作ったリスト2(リスト1)の書き方がオーソドックスでないようでしたらこれを(送信先=自分のアドレスとSMTPの部分だけ変えて)コピーすればすぐに試せるというサンプル(mb_send_mailを使った)を紹介していただけるとたいへん助かり勉強になります。 わがままを言ってもうしわけありませんがよろしくお願いいたします。

  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.1

> Warning: mb_send_mail() [function.mb-send-mail]: > Failed to connect to mailserver at "localhost" port 25, > verify your "SMTP" and "smtp_port" setting in php.ini > or use ini_set() in C:\xampp\htdocs\sendmail.php on line 12 これは php.ini の設定が反映されていない状態であると思われます。 localhost とはご自分のパソコンのことですので、ご自身のパソコンを メールサーバーと認識して送信して失敗しています。 > 1.php.ini の設定は下記のとおりです。正しいでしょうか? この箇所に関しての php.ini の設定は合っていると思います。 XAMPP かと思われるので php.ini の設定は問題ないのではないかと 思うのですが……、結果的には php.ini が反映されていません。 もしかすると Apache を再起動してないのではないのでしょうか? これをご確認のされた後にもエラーとなるのであれば次の作業もして 試してみて下さい。 php.ini をどこのディレクトリに保存されているかはお書きになられて ませんが、取り敢えず php.ini を C:\WINDOWS にコピーしてみて下さい。 (もしも Windows 2000 なら C:\WINNT にコピーしてみて下さい。) その後に Apache を再起動して下さい。 > Warning: Cannot modify header information - headers already > sent by (output started at C:\xampp\htdocs\sendmail.php:12) > in C:\xampp\htdocs\sendmail.php on line 13 このエラーは HTTP ヘッダ(Location: の箇所)を送信する前に空の行が 送信されたのではないかと思われます。 おそらく sendmail.php の先頭に空の行があると思われます。 sendmail.php には空の改行を入れないようにして下さい。 > phpを使ってお問い合わせのページができることをめざしており、 > とりあえず自宅でテストをしてる状況です ご自身のパソコンで php.ini の設定がどうしても反映されない時は 一度、実際のサーバにアップロードして確かめてみて下さい。 あと気になるところと言えば sendmail.php のメールのエンコードの お行儀が悪いと思います。(これは書籍の例が悪いのでしょう) sendmail.php はエンコードを JIS(ISO-2022-JP) して保存して下さい。 ただし場合によっては文字が化ける可能性があると思われます。

mem74891
質問者

補足

>Windows 2000 なら C:\WINNT にコピーしてみて下さい。 その後に Apache を再起動して下さい。 やりましたが変化ありません。 >このエラーは HTTP ヘッダ(Location: の箇所)を送信する前に空の行が 送信されたのではないかと思われます。 おそらく sendmail.php の先頭に空の行があると思われます。 最初の質問のとおり 1行目から <?php ではじまり 何も記載されていない行はありません。(質問の意図が間違えてるかもしれませんがすみませんがリスト2と書いた部分を確認していただけますでしょうか)

関連するQ&A

  • PHPのメール送信ができません

    初心者な者でこのような質問でごめんなさい。 私は10日でおぼえるPHPという本で勉強しているのですが 下記の内容に困ってます 【mail_input.php】 10日でおぼえるPHP5入門教室(アンケート)</h1> <form method="post" action="sendmail.php"> <input type="hidden" name="_email" value="****@***.jp" /> <input type="hidden" name="subject" value="10日でおぼえるPHP5入門教室" /> <input type="hidden" name="_result" value="<?php print($_SERVER['PHP_SELF']);?>" /> <table border="0"> <tr> <th align="right">名前:</th> <td><input type="text" name="name" size="20" maxlength="30" /></td> </tr><tr> <th align="right">E-Mail:</th> <td><input type="text" name="_from" size="50" maxlength="255" /></td> </tr><tr> <th align="right" valign="top">自由記入欄:</th> <td><textarea name="memo" cols="50" rows="5"></textarea></td> 【sendmail.php】 <?php $header_info="From: ".$_POST['_from']."\nContent-Type: text/plain;charset=ISO-2022-JP\nX-Mailer: PHP/".phpversion(); $body="■■".$_POST['_subject']."■■\n\n"; foreach($_POST as $key=>$value){ if(!strstr($key,"_")){ $body.=" [".$key."] ".$value."\r\n"; } } mb_send_mail($_POST['_email'],$_POST['_subject'],$body,$header_info); header("Location: ".$_POST['_result']); ?> ===================================================== 上記の内容でメールが送れるとの事だったのですが php.iniの設定も SMTPやsendmail_fromどちらとも設定はでき 送れるはずなのですがメールが届きません なぜなのでしょうか? もしよろしければ教えて頂けないでしょうか? お願いします。

    • 締切済み
    • PHP
  • PHPのメールフォームでメールが受信できない。

    かんなりのPHP初心者で「10日でおぼえるPHP5入門教室」という本で初めてPHPを勉強しています。 http://www.webmate.ne.jp/samples/php10.jsp の4日目の1時限目をしているのですが、何回やってもメールが受信できません。ブラウザで入力して送信してもエラーも出ないのでどうしたらいいのかわかりません。 PHPの内容は以下の通りです。 mail_input.phpの中身 <html> <head> <title>10日でおぼえるPHP5入門教室(アンケート)</title> </head> <body> <h1 style="background:#cccccc"> 10日でおぼえるPHP5入門教室(アンケート)</h1> <form method="POST" action="sendmail.php"> <input type="hidden" name="_email" value="**@yahoo.co.jp" /> <input type="hidden" name="_subject" value="10日でおぼえるPHP5入門教室" /> <input type="hidden" name="_result" value="<?php print($_SERVER['PHP_SELF']);?>" /> <table border="0"> <tr> <th align="right">名前:</th> <td><input type="text" name="name" size="20" maxlength="30" /></td> </tr><tr> <th align="right">E-Mail:</th> <td><input type="text" name="_from" size="50" maxlength="255" /></td> </tr><tr> <th align="right" valign="top">自由記入欄:</th> <td><textarea name="memo" cols="50" rows="5"></textarea></td> </tr> </table> <input type="submit" value="送信" /> <input type="reset" value="クリア" /> </form> </body> </html> ・sendmail.phpの中身は <?php $header_info="From: ".$_POST['_from']."\nContent-Type: text/plain;charset=ISO-2022-JP\nX-Mailer: PHP/".phpversion(); $body="■■".$_POST['_subject']."■■\n\n"; foreach($_POST as $key=>$value){ if(!strstr($key,"_")){ $body.="[".$key."]".$value."\r\n"; } } mb_send_mail($_POST['_email'],$_POST['_subject'],$body,$header_info); header("Location: ".$_POST['_result']); ?> という感じです。php.iniもYAHOO!のフリーメールなので SMTP=smtp.mail.yahoo.co.jp sendmail_from=**@yahoo.co.jp 拡張関数が使えるように extension_dir="c:/php/ext" extension=php_mbstring.dll としました。 しかし全く送れません。Yahoo!のフリーメールだからでしょうか?? すいません。ど素人なのでわかりやすく教えて下さい。お願いします。

  • メール関数で訪問者の声を受け取りたい

    メール関数で訪問者の声を受け取りたい 現在入門書で勉強中です。例題のプログラムがうまく動きません。アドバイスお願いします。使用OSはwindows7、ブラウザはfirefox3.6.11です。apatcheは2.2で、PHPは5.2.14です。 (1)mail_input.php <html> <head> <title>PHP5入門</title> </head> <body> <h1 style="background:#cccccc"> PHP5入門</h1> <form method="POST" action="sendmail.php"> <input type="hidden" name="_email" value="ybbsmtp.mail.yahoo.co.jp" /> <input type="hidden" name="_subject" value="PHP5入門" /> <input type="hidden" name="_result" value="<?php print($_SERVER['PHP_SELF']);?>" /> <table border="0"> <tr> <th align="right">名前:</th> <td><input type="text" name="name" size="20" maxlength="30" /></td> </tr><tr> <th align="right">E-Mail:</th> <td><input type="text" name="_from" size="50" maxlength="255" /></td> </tr><tr> <th align="right" valign="top">自由記入欄:</th> <td><textarea name="memo" cols="50" rows="5"></textarea></td> </tr> </table> <input type="submit" value="送信" /> <input type="reset" value="クリア" /> </form> </body> </html> (2)sendmail.php <?php $header_info="From: ".$_POST['_from']."\nContent-Type: text/plain;charset=ISO-2022-JP\nX-Mailer: PHP/".phpversion(); $body="■■".$_POST['_subject']."■■\n\n"; foreach($_POST as $key=>$value){ if(!strstr($key,"_")){ $body.="[".$key."]".$value."\r\n"; } } mb_send_mail($_POST['_email'],$_POST['_subject'],$body,$header_info); header("Location: ".$_POST['_result']); ?> 警告文が以下です Warning: mb_send_mail() [function.mb-send-mail]: SMTP server response: 530 Sorry, please use SMTP-AUTH instead - for help go to http://help.yahoo.co.jp/help/jp/mail/whatisymail/whatisymail-51.html in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\php10\day04-1\sendmail.php on line 9 私の英語力ではSMTP-AUTHを使えといっているように取れるのですが、ヘルプのサイトで指定されているメールソフトは全てwindows7に対応していません。何か方法はないでしょうか?

    • ベストアンサー
    • PHP
  • mb_send_mailについて

    こんにちは。現在phpの勉強中で、まだローカルテスト環境でしか動かしたことのない者です。今回もローカルテスト環境なんですが、いずれアンケートフォームのようなものを作りたくて、ある書籍を参考に、自分宛にメールを送ろうとしました。 コードの内容は、最初に表示する画面の「mail_input.php」が、 <html> <head> <title>メール送信</title> </head> <body> <h1 style="background:#cccccc"> メール送信</h1> <form method="POST" action="sendmail.php"> <input type="hidden" name="_email" value="ここに自分のメールアドレスを入れました" /> <input type="hidden" name="_subject" value="自分宛てメール" /> <input type="hidden" name="_result" value="<?php print($_SERVER['PHP_SELF']);?>" /> <table border="0"> <tr> <th align="right">名前:</th> <td><input type="text" name="name" size="20" maxlength="30" /></td> </tr><tr> <th align="right">E-Mail:</th> <td><input type="text" name="_from" size="50" maxlength="255" /></td> </tr><tr> <th align="right" valign="top">自由記入欄:</th> <td><textarea name="memo" cols="50" rows="5"></textarea></td> </tr> </table> <input type="submit" value="送信" /> <input type="reset" value="クリア" /> </form> </body> </html> で、メールを送るプログラムの「sendmail.php」が、 <?php $header_info="From: ".$_POST['_from']."\nContent-Type: text/plain;charset=ISO-2022-JP\nX-Mailer: PHP/".phpversion(); $body="■■".$_POST['_subject']."■■\n\n"; foreach($_POST as $key=>$value){ if(!strstr($key,"_")){ $body.="[".$key."]".$value."\r\n"; } } $kekka=mb_send_mail($_POST['_email'],$_POST['_subject'],$body,$header_info); if($kekka){ header("Location: ".$_POST['_result']); } else{ print "送信失敗"; } ?> です(どちらも文字コードはUTF-8で改行コードはLFです)。 これを動かしたら、 Warning: mb_send_mail() [function.mb-send-mail]: SMTP server response: 451 See http://pobox.com/~djb/docs/smtplf.html. in C:\xampp\htdocs\Mysite\lesson\php10\day04-1\sendmail.php on line 9 送信失敗 と表示され、メールも受信できませんでした。 php.iniの内容は、 [mail function] ; For Win32 only. SMTP = smtp.eonet.ne.jp smtp_port = 25 ; For Win32 only. sendmail_from = ここに自分のメールアドレスをいれました ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ;sendmail_path = "C:\xampp\sendmail\sendmail.exe -t" で、windowsメールのツールメニューのアカウント→プロパティ→サーバーのところの送信メール(SMTP)(U)のところは、smtp.eonet.ne.jpになっています。送信メールサーバーのところは、「このサーバーは認証が必要」にチェックを入れています。詳細設定の、サーバーのポート番号のことろの、送信メール(SMTP)(O)のところは25にしています。 こちらの環境は、windows vista、xampp1.6.5、php5.2.5で、メールソフトはwindows mailです。加入しているプロバイダはeonet(イオネット)です。コードはサンプルコードをちょっと変えた程度のものなので、たぶんphp.iniの設定やwindowsメールの設定が悪いのだろうと思い、windowsメールの設定のことをイオネットに問い合わせたところ、phpとかそういったことへの質問は対応しかねますとのことでした(対応した方はphpという単語自体を知りませんでした)。 php.iniの[mail function]のところで、 ; For Win32 only. SMTP = smtp.eonet.ne.jp smtp_port = 587 にして、windowsメールの詳細設定の、サーバーのポート番号のことろの、送信メール(SMTP)(O)のところを587にしたり、その他いろいろやってみましたが、ダメでした。ただメールを自分宛に送るだけなので、おそらくとても初歩的なところでつまずいているんでしょうが(考え方が根本的にズレてるような気もします)、解決方法が見つかりません。どなたかアドバイスいただけませんか。イオネットの方だと非常にありがたいです。

    • ベストアンサー
    • PHP
  • PHPでメールを送信するには

    PHP超初心者です。 参考本をもとにPHPでメールを送信するということにチャレンジしているのですが、次のような文章が出ます。 Warning: mb_send_mail() [function.mb-send-mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Program Files\Apache Group\Apache2\htdocs\php10\mail.php on line 11 エラー:送信に失敗しました 参考本に書いてあるとおり、 php.iniのSMTP=localhost を自分が使っているoooooo@ocn.ne.jpに書き換え、sendmailには自分の別アドレスを記述したのですが。 11行目のエラーも何を指しているのかわかりません。 ご回答よろしくお願いします。 【mail.php】 <html> <head><title>mail.php</title></head> <body> <?php $address=$_POST['address']; $subject=$_POST['subject']; $message=$_POST['message']; $header="Content-Type:text/plain;charset=iso-2022-jp"; mb_language("Japanese"); if(mb_send_mail($address, $subject, mb_convert_encoding($message,"JIS","EUC-JP"),$header)){ print("送信完了しました。"); }else{ print("エラー:送信に失敗しました"); } ?> </body> </html> 【mail_form.html】 <html> <head><title>メールの送信</title></head> <body> <h2>メールの送信</h2> <form action="mail.php" method="post"> 宛先:<input type="text" name="address"><br /> 件名:<input type="text" name="subject"><br /> 本文:<br /><textarea name="message" rows="5" cols="30"></textarea><br /> <input type="submit" value="送信"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • PHPでMySQLにデーターを追加するところで壁に当たってしまいました

    PHPでMySQLにデーターを追加するところで壁に当たってしまいました。 PHP5.3&MYSQL5.1 1.フォームへ入力 2.確認画面 3.MySQLへデーター追加 1.form <html> <head><title></title></head> <body> <form method="post" action="conf.php"> <table> <tr><th>番号</th><td><input type="text" name="id" /></td></tr> <tr><th>タイトル</th><td><input type="text" name="title" /></td></tr> <tr><th>テキスト</th><td><textarea name="cont" cols="40" rows="5" /></textarea></tr> <tr><th>日付け</th><td><input type="text" name="update" size="10" /></td></tr> </table> <input type="submit" value="送信" /><input type="reset" value="リセット" /> </form> </body> </html> 2.確認画面 <html> <head><title></title></head> <body> <table> <tr><th>番号</th><td><?php echo htmlspecialchars($_POST["id"]) ?></td></tr> <tr><th>タイトル</th><td><?php echo htmlspecialchars($_POST["title"]) ?></td></tr> <tr><th>テキスト</th><td><?php echo htmlspecialchars($_POST["cont"]) ?></td></tr> <tr><th>日付け</th><td><?php echo htmlspecialchars($_POST["update"]) ?></td></tr> </table> <form method="post" action="upld.php"> <input type="hidden" name="did" value="<?php echo htmlspecialchars($_POST["id"]) ?>" /> <input type="hidden" name="title" value="<?php echo htmlspecialchars($_POST["title"]) ?>" /> <input type="hidden" name="cont" value="<?php echo htmlspecialchars($_POST["cont"]) ?>" /> <input type="hidden" name="update" value="<?php echo htmlspecialchars($_POST["update"]) ?>" /> <input type="submit" value="登録" /> </form> </body> </html> 3.MySQLへデーター追加 <?php $Con = mysql_connect("localhost","root",""); if ($Con == false) {dir ("MySQLの接続に失敗。");} if (!mysql_select_db("phpdata",$Con)) {dir ("データーベース接続に失敗。");} $sql = "insert into daimoku(id,title,cont,update) values('".$_POST["id"]."','".$_POST["title"]."','".$_POST["cont"]."','".$_POST["update"]."')";//SQL文の作成 $res = mysql_query($sql) or die(mysql_error());//クエリの実行 mysql_close($Con);//切断 ?> <html> <head> <title></title> </head> <body> <p>ご登録ありがとうございました。</p> <a href="01.php">戻る</a> </body> 以上のコードでデーターの追加が出来ません。 どなたか教えていただけないでしょうか?

    • ベストアンサー
    • PHP
  • (PHP初学者) mb_send_mail

    フォームに入力された内容をローカル環境(Xampp)から フリーメールアドレスに送信をする課題を勉強をしています。 入力側ファイル ---------------------------------------------- <html> <body> <form action="mail.php" method="post"> 名前</th><td><input type="text" name="name"><br> メール</th><td><input type="text" name="mail"><br> メッセージ</th><td><textarea name="messe"></textarea><br> <input type="submit" value="確認する" name="submit"> </body> </html> ---------------------------------------------- 送信ファイル(mail.php) ---------------------------------------------- <?php error_reporting(1); $name = $_POST["names"]; $mail = $_POST["email"]; $messe = $_POST["messe"]; mb_language("ja"); mb_internal_encoding("euc-jp"); $naiyou = $names."<br/>".$mail."<br />".$messe; $result = mb_send_mail("○○○@yahoo.co.jp","メール送信テスト",$naiyou); //受信するフリーメールアドレス if($result){echo "成功"; }else{echo "失敗";} ?> ---------------------------------------------- このサンプルと別のサンプルで試して どちらも結果は「成功」と表示されるのですが 実際にはフリーメール側でのメールの受信はできません。 (ホットメールとヤフーメールで試しています。) PHP学習サイトで「php.ini」の設定を変えなければならないということで 以下の部分のセミコロンをはずし変更してみました。 [mail function] SMTP = ○○○(ここには契約プロバイダのsmtpサーバを記入) smtp_port = 25 sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t" 多くのPHPを勉強している方がここでつまずいているようで 色々調べてみたのですが 上手くいかない原因はそれぞれ異なるようで 上手くいく手がかりが見つかっていません。 難しいことはまだ理解できないため できるだけ難しい関数や処理などは使わない方法で 解決できる手段があれば ご教授よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPで内容確認画面表示後メールに内容が届かない

    PHPを独学で勉強中なのですが、フォームで入力した項目(名前、住所、メールアドレスなど)をPHPで作成した確認画面に内容を反映後、その内容をメールで送信すると内容は送信されてなくメールフォームだけが送信されてしまいます?? 確認画面の内容と同じ文を送信送信して、メールの本文に確認画面と同じ内容をいれるにはどうすればいいのでしょうか?教えてください。よろしくお願いします。 流れ 入力画面(inquiry.html) ⇒ 確認画面(sendmail01.php) ⇒ 送信画面(sendmail02.php) 各画面のソースを一部掲載しました。 【入力画面】 <form action="sendmail01.php" method="POST" name="fmck" onSubmit="return checkSB()"> <tr> <td width="130"><div align="center">氏名</div></td> <td width="430"><input type="text" name="name" size="25" class="zenk1"> ※必須事項</td> </tr> <tr> <td width="130"><div align="center">住所</div></td> <td width="430"><input type="text" name="address" size="60" class="zenk1"> ※必須事項</td> </tr> <tr> <td colspan="2" height="50"><div align="center"><input type="submit" value="入力内容のご確認">   <input type="reset" value="入力内容のクリア"></div></td> </tr></form> 【確認画面】 <tr> <td width="130"><div align="center">氏名</div></td> <td width="430"><?php echo $_POST["name"] ?></td> </tr> <tr> <td width="130"><div align="center">住所</div></td> <td width="430"><?php echo $_POST["address"] ?></td> </tr> <tr> <td colspan="2" height="50"> <form action="sendmail02.php" mane="fmck" method="POST"><div align="center"><input type="submit" value="送信する">    <input type="button" value="前画面に戻る" onClick="history.back()"></div></form></td> </tr> 【送信画面】 // メールを送信するアドレス設定(複数指定する場合は「,」で区切る) $to = "abc@yahoo.co.jp"; // 送信するメールの件名を設定 $subject = "メールフォームお問い合わせ"; // メール本文のヘッダーを設定 $body = "###### お問い合わせ ######" . "\n\n"; // 送信結果をお知らせする変数を初期化する $message = ''; // 投稿内容の取得 $name= $_POST["name"]; $address= $_POST["address"]; // メールのレイアウトの編集 $header = "From:" .$name ." <" .$email .">"; $body .= "お問い合わせがありました。対応よろしくお願いします。" ."\n\n"; $body .= "送信日時:". date( "Y/m/d (D) H:i:s", time() ) ."\n\n"; $body .= "----- お問い合わせ情報 -------------------------" ."\n"; $body .= "■氏名:" .$name ."\n"; $body .= "■フリガナ:" .$address ."\n"; if (mb_send_mail($to,$subject,$body,$header)) { $message = "メール送信は無事に終了しました。 お問い合わせありがとうございました。"; } else { $message = "メール送信は失敗しました。"; }

    • 締切済み
    • PHP
  • フォームで確認画面を表示させるにはどうすればいいのでしょうか?

    質問をご覧下さりありがとうございます。 <form action="18add.php" method="POST" name="form1"> <table> <tr> <th>番号(半角数字)</th> <td><input type="text" name="number" value=""></td> </tr> <tr> <th>名前</th> <td><input type="text" name="name" value=""></td> </tr> <tr> <td><input type="hidden" name="mode" value="add"></td> <td><input type="submit" name="submit" value="追加"></td> </tr> </table> </form> htmlでこんなフォームを作り、phpで $table_body = ""; if( isset( $_POST['mode'] ) ){ $mode = $_POST['mode']; $number = $_POST['number']; $name =$_POST['name']; } else{ $mode = ""; $number = ""; $name = ""; } if( $mode == "add" ){ $table_body .= "<tr>"; $table_body .= "<td>"; $table_body .= $number; $table_body .= "</td>"; $table_body .= "<td>"; $table_body .= mb_convert_encoding( $name, "SJIS", "EUC-JP" ); $table_body .= "</td>"; $table_body .= "</tr>"; } で一度入力された情報を確認する画面を作りたいのですが うまくいきません。 初心者なのでわかりやすく説明をつけてくださると大変助かります。

    • 締切済み
    • PHP
  • [PHP初心者] フォームのエラーチェック

    PHPやデータベースに全く疎い者です。 皆様にご指導頂きたく投稿致します。質問内容もレベルが低いですがどうが宜しくお願いします。 メールフォームにてフォームのボタンを押下し、 エラーチェックをして、エラー項目を同一画面上の上の辺りに表示させたいのですが、、参考書を読んだり、過去スレを拝見しても、どうもわかりません。 <body> //↓この辺をどう書けばいいのか、さっぱりなんです。 <?php if(isset($_POST['mailform'])) { if($_POST['name'] == "") { echo("名前を入力して下さい。<br>"); }} ?> //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ <form method="POST" action="kakunin.php"> <table border="0" cellpadding="5"> <tr> <td colspan="2"></td> </tr> <tr> <td>名前</td> <td><input type="text" name="name" size="20"></td> </tr> <tr> <td>メールアドレス</td> <td><input name="mail" type="text" id="mail" size="20"></td> </tr> <tr> <td>項目</td> <td>     <input type="checkbox" name="check[]" value="PHP">PHP <input type="checkbox" name="check[]" value="Perl">Perl <input type="checkbox" name="check[]" value="ASP">ASP <input type="checkbox" name="check[]" value="JSP">JSP</td> </tr> <tr> <td>お問い合わせ内容</td> <td><textarea rows="5" name="naiyou" cols="40"></textarea></td> </tr> <tr> <td colspan="2"><input name="mailform" type="submit" id="mailform" value="::入力内容を確認::">  <input type="reset" name="Submit" value="リセット"></td> </tr> </table> </form> </body>

    • 締切済み
    • PHP

専門家に質問してみよう