こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

投稿日時 - 2008-10-03 05:39:36

QNo.4373901

すぐに回答ほしいです

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

>他のレンタルサーバーの場合、Outbound Port25 Blockingで止められないんでしょうか??

レンタルサーバの場合は、そこのサーバのSMTPを使えますから、特に設定の必要もなく、
mb_send_mailでメールを送れるはずです。


>ほとんどのISPがこれをやっているてことなんでしょうか??

そうですね。SPAM対策のためにやってる所は多いと思います。


>またフリーで簡単なサーバーとかはないんでしょうか??

最近のレンタルサーバはほとんどのことがGUIで管理できるので、
難しいことは無いですよ。フリーのところは知りませんが、
月額数百円程度のサーバもあります。
負荷とか安定性を考えなければ、勉強用には、十分だと思います。

投稿日時 - 2008-10-03 22:56:24

お礼

返事ありがとうございますっ。
勉強させて頂きます。

投稿日時 - 2008-10-06 19:27:59

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>理由はなんででしょうか?
プログラムミスでサーバダウンさせたらどうするんですか?
そうなったらどれだけの人に迷惑になるか考えられませんか?
そうなったらどれだけ損害になるか考えられませんか?
自分は大丈夫だとか変な自身を持っているのですか?

投稿日時 - 2008-10-07 20:50:52

ANo.1

smtpがsmtp.mail.yahoo.co.jpな場合、mb_send_mailでは送信できないと思います。
理由は
1)Outbound Port25 Blocking を使用している
2)SMTP認証が必要

上のポートに関しては、ini_set("smtp_port",587); とすることでも
解決できますが、下の認証に関してはどうにも出来ませんね。

おそらく、勉強用にWindowsマシンにPHPを入れているものと思われますが、
どこか安いレンタルサーバーを借りたほうが、変な設定で悩まなくてすむかもしれませんよ。

参考URL:http://ja.wikipedia.org/wiki/Outbound_Port_25_Blocking

投稿日時 - 2008-10-03 08:49:22

お礼

返事ありがとうございます!!

他のフリーメールとか試して無理だったのもそういった理由なのかもしれませんね。

他のレンタルサーバーの場合、Outbound Port25 Blockingで止められないんでしょうか??

ほとんどのISPがこれをやっているてことなんでしょうか??

またフリーで簡単なサーバーとかはないんでしょうか??

凄い初心者ですいません。。

投稿日時 - 2008-10-03 14:51:05

あなたにオススメの質問