• 締切済み

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
  • 回答数5
  • ありがとう数3

みんなの回答

  • yossy-55
  • ベストアンサー率55% (5/9)
回答No.5

自前でサーバをお持ちのようですが、それなら maillogを見てみましょう。 OSは何を使っているか分かりませんが、たとえばFreeBSDとかなら /var/log/maillog で確認ができます。 maillogに何が書かれていますか?

  • vaio09
  • ベストアンサー率37% (756/2018)
回答No.4

SMTPサーバは動作していますか?コンソールから、 telnet xxx.xxx.xxx.xxx(SMTPサーバのIPアドレスまたはFQDN) 25 とやってみて、接続できますか? または、 <?php phpinfo(); ?> と書いたファイル(phpinfo.phpなどとする)を表示させ、現在の設定がメー ル送信できる環境かどうか、確認してみてください。 ファイルのパーミッションは、ちゃんと設定していますよね?

  • tsukachan
  • ベストアンサー率42% (202/470)
回答No.3

#1です。 ではまずネットワークアナライザ使って正しくパケットが送信されているか確認しましょう。 送信したメールのパケットが無ければスクリプトもしくはミドルウェアの記述・設定ミスなどが考えられます。 次にルータのログを見てみましょう。 ちゃんと外部に送信されていますか? あとSMTPサーバの制限・規制に掛かってないかもう一度確認しましょう。 送信者アドレスがSMTPサーバで許可されていなければ時間がたってからエラーメールが帰ってきます。それを受信できるアドレス使ってないとだめですけどね。 自前のSMTPサーバを使っているのであればそこからのリレーをプロバイダが許可していない事も考えられます。

  • yossy-55
  • ベストアンサー率55% (5/9)
回答No.2

そもそもこのスクリプトはどこまでが正確に書いてありますか? </FORM>も無いようですし・・・ テスト環境をもう少し書いて頂かないと、回答を得るのは難しいかもしれません。 ある程度、環境を書いておかないと、ソースをじっくり読んでくれる人もいないかもしれません。

radicalv
質問者

補足

ごめんなさい 文字数をオーバーしてたので 質問するのに消さないと書き込めなかったので 消してしまいました。 下が【mail_input.php】の全文です <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head> <body> <h1 style="background:#CCCCCC"> 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> </tr> </table> <input type="submit" value="送信" /> <input type="reset" value="クリア" /> </form> </body> </html>

  • tsukachan
  • ベストアンサー率42% (202/470)
回答No.1

どのようなエラーが起こっているか具体例を書かないと判りません ・スクリプトのエラーなのか   単純なスクリプトミスから見直ししょう ・ネットワークのエラーなのか   ルータ・ファイヤウォールの設定は正しいですか?ポートは開放してありますか? ・送信サーバのエラー応答なのか   送信サーバーが許可していない経路・ドメインでの送信をしようとしていませんか? このあたりが判らなければプログラムの問題というよりメール送信の仕組みを勉強したほうが良いです。

radicalv
質問者

補足

回答ありがとうございます 勉強不足って事を痛感しました。 スクリプト的にはエラーは出ません というか上のPHP文は本に載っている通り なのでそのまま使用しました。 ルータ・ファイヤウォールの設定は 間違いなく設定してあります 何もエラーが起こらずただ送った物が届かないといった 現象が起こっております。

関連するQ&A

  • 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!のフリーメールだからでしょうか?? すいません。ど素人なのでわかりやすく教えて下さい。お願いします。

  • 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
  • メール関数で訪問者の声を受け取りたい

    メール関数で訪問者の声を受け取りたい 現在入門書で勉強中です。例題のプログラムがうまく動きません。アドバイスお願いします。使用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
  • phpを使ってのメール送信について

    会社のホームページを任されて、phpでメールフォームを作成中です。 phpは本を購入したり、サイトを閲覧しながら勉強中ですが時間が取れず、まださほど詳しくありません。 1.情報入力→2.確認画面→3.お礼画面 と3頁を作ってそれぞれ確認しましたところ、入力情報は受け渡しができました。 その後、メールアドレスへ入力していただいた情報を送るプログラムを見様見真似で作ってみたところ動かなくなってしまいました。 どこがおかしいのか添削・ご意見(できれば初心者にもわかるように)いただけないでしょうか。 よろしくお願いします。 <p>入力内容</p> <form method="POST" action="(3.のページへのパス)"> <table border="1" width="80%" cellspacing="5"> <tr><td align="right" width="20%">お名前:</td> <td align="left" width="80%"><?php print($_POST['name']);?></td></tr> <tr><td align="right">e-mail:</td> <td align="left"><?php print($_POST['mail']);?></td></tr> <tr><td align="right">お問い合わせ:</td> <td align="left"><?php print($_POST['comment']);?></td></tr> </table> <p></p> <input type="submit" name="Submit" value="送信"> </form> ↑ここまでが確認画面でこの下にすぐ続けて <?php $name = $_POST['name']; $mail = $_POST['mail']; $comment = $_POST['comment']; $to = '(送信先メールアドレス)'; $subject = 'サイトからの問い合わせ内容'; $massage = '$name . $mail . $comment'; if(!$_POST['submit']){ mb_language("Japanese"); mb_internal_encoding("UTF-8"); $header = 'From: ' . $from . "\n"; $to = mb_encode_mimeheader(mb_convert_encoding($name, "JIS", "UTF-8")) . ' <' . $mail . '>'; $param = '-f' . $from; mb_send_mail($to, $subject, $message, $header, $param); } ?> ↑2頁めに挿入したメールへの送信指示の(つもりの)部分です。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • メール送信フォーム

    メール送信フォームを作成しているのですが、 悩み続けて1週間たちました(とほほ) 今自分自身で理解してる事は System=Linux Server=Apache PHP=4.23 sendmail_path=/usr/sbin/sendmail -t -i Configure Command=--enable-mbstring と言う事で mb_send_mailが使えるのは確認できました。 ページは下記のように記載してあります。 エラーはでませんが、メールが届きます。 わかる方教えていただけますでしょうか? 一部省略しています。 <FORM METHOD="POST" ACTION="<?php echo $PHP_SELF; ?>" ENCTYPE="text/plain"> <TABLE BORDER="0" 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.com">商品</OPTION> </SELECT> </TD> </TR> <TR> <TD > <textarea name="message" ></textarea> </TD> </TR> <TR> <TD > <nput type="hidden" name="actionモ VALUE=post> <input type="hidden" name="subject" value="質問"> </TD> </TR> </TABLE> </FORM> <?php function SendMessage(){ global $to,$subject,$meessage,$from; if(mb_send_mail($to, $subject, $meessage, $from)){ print "メールが送信されました。$to"; } else { print "メールの送信に失敗しました"; } } if($action == "post"){ SendMessage(); } else{ } ?>

    • ベストアンサー
    • 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で内容確認画面表示後メールに内容が届かない

    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
  • メール送信プログラム

    お世話になっております。 下記本文内容にメール送信プログラム(mail.php)を付加したいと考えます。 私が考えるにその手法は二つあり、 1つめにそのまま、本文の前か後にmail.phpを付加する。 もしくは 本文の <form method="post" action="<?=$_SERVER["PHP_SELF"]?>"> に <form method="post" action="<?=$_SERVER["PHP_SELF"]?>" action="mail.php"> とする。 前者はどのように構文を書いたらよいのか不明で、 後者は構文を書いてみましたが、正常にメール送信されませんでした。 ご教授のほどお願いします。 ■本文■ <form method="post" action="<?=$_SERVER["PHP_SELF"]?>"> <input type="hidden" name="act" value="updconf"> <input type="hidden" name="roomid" value="<?=$roomid ?>"> <input type="hidden" name="hiduke" value="<?=$hiduke?>"> <input type="hidden" name="jikan" value="<?=$jikan?>"> <input type="submit" name="sub" value="予約更新"> </td> <td>お名前</td> <td> <input type="text" name="yoyakusha" value="<?=$yoyakusha ?>"> </td> </tr> <tr> <td>メールアドレス</td> <td><input type="text" name="email" value="<?=$email ?>"></td> </tr> </form> ■mail.php■ <? // メール送信元を指定 $title = "xyz"; $from = "mail"; $headers .= "From: $from\r\n"; $headers .= "Bcc: aaa@bbb\r\n"; $title2 = "=?iso-2022-jp?B?".base64_encode($title)."?="; $naiyou2 = "仮ユーザID:$yoyakusha\n 仮パス:$pass\n メールアドレスfrom:$from\n メールアドレスto:$email\n @ペイにて登録したユーザID:$title\n"; mail($email, $title2, $naiyou2, $headers) ?>

    • 締切済み
    • 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初心者です。宜しくお願いします。 問い合わせフォームを作成したく、以下のHTMLとPHPファイルを作成しましたが、「mail.php」の時点で作動せず、メールもおくられません。色々調べて「.htaccess」での設定に関係あると書いていますが、よくわかりません・・・ずっとわからず悩んでます。教えていただけないでしょうか。宜しくお願い致します。 「mail.html」 <html> <head> <title>メール送信フォーム</title> </head> <h2>メール送信フォーム</h2> <form method="POST"action="kakunin.php"> <table border="0"> <tr> <td>お名前</td> <td><input type="text" name="name" size="20"></td> </tr> <tr> <td>メールアドレス</td> <td><input type="text" name="from" size="20"></td> </tr> <tr> <td>メールタイトル</td> <td><input type="text" name="title" size="20"></td> </tr> <tr> <td>メッセージ</td> <td><textarea rows="5" name="naiyou" cols="40"></textarea></td> </tr> <tr> <td colspan="2"><input type="submit" value="内容を確認"></td> </tr> </table> </form> </body> </html> 「kakunin.php」 <html> <head> <title>メール送信フォーム</title> </head> <body> <h2>メール送信内容確認画面</h2> <?php //フォームの値を取得します。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ //「magic_quotes_gpc=on」のときはエスケープ解除 if(get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $$k = $v; } } else { exit(); } //値をチェックします。 $ErrFlg = 0; if($name == ""){ echo"<p>お名前を入力してください。"; $ErrFlg = 1; } if($from == ""){ echo"<p>メールアドレスを入力してください。"; $ErrFlg = 1; } if($title == ""){ echo"<p>メールタイトルを入力してください。"; $ErrFlg = 1; } if($naiyou == ""){ echo"<p>メッセージを入力してください。"; $ErrFlg = 1; } if($ErrFlg){ exit(); } ?> <h2>内容を確認して送信ボタンをクリックしてください。</h2> <form method="POST" action="mail.php"> <table border="0"> <tr> <td width="100">お名前</td> <td width="300"><?php echo $name?></td> </tr> <tr> <td width="100">メールアドレス</td> <td width="300"><?php echo $from?></td> </tr> <tr> <td width="100">メールタイトル</td> <td width="300"><?php echo $title?></td> </tr> <tr> <td width="100">メッセージ</td> <td width="300"><?php echo $naiyou?></td> </tr> <tr> <td colspan="2"><input type="submit" value="送信"></td> </tr> </table> <input type="hidden" name="name" value="<?php echo $name?>"> <input type="hidden" name="from" value="<?php echo $from?>"> <input type="hidden" name="title" value="<?php echo $title?>"> <input type="hidden" name="naiyou" value="<?php echo $naiyou?>"> </from> </body> </html> 「mail.php」 <HTML> <HEAD> <title>メール送信フォーム</title> </HEAD> <BODY> <?php //メール送信先を指定 $to == "web@beworks-web.com"; //フォームの値を取得 if($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ //「magic_quotes_gpc=on」のときはエスケープ解除 if(get_magic_quotes_gpc()){ $v = stripslashes($v); } $v = htmlspecialchars($v); $sk = $v; } } else { exit(); } //メール本文を組み立て $naiyou = "お名前:$name\n メールアドレス:$from\n タイトル:$title\n 内容:$naiyou\n"; if($name != "" and $from != "" and $title != "" and $naiyou != ""){ if(mb_send_mail($to,$title,$naiyou,"From:$from")) { echo "メールを送信しました"; } else { echo "メール失敗です"; } } ?> </BODY> </HTML>

    • 締切済み
    • PHP

専門家に質問してみよう