- 締切済み
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どちらとも設定はでき 送れるはずなのですがメールが届きません なぜなのでしょうか? もしよろしければ教えて頂けないでしょうか? お願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- yossy-55
- ベストアンサー率55% (5/9)
自前でサーバをお持ちのようですが、それなら maillogを見てみましょう。 OSは何を使っているか分かりませんが、たとえばFreeBSDとかなら /var/log/maillog で確認ができます。 maillogに何が書かれていますか?
- vaio09
- ベストアンサー率37% (756/2018)
SMTPサーバは動作していますか?コンソールから、 telnet xxx.xxx.xxx.xxx(SMTPサーバのIPアドレスまたはFQDN) 25 とやってみて、接続できますか? または、 <?php phpinfo(); ?> と書いたファイル(phpinfo.phpなどとする)を表示させ、現在の設定がメー ル送信できる環境かどうか、確認してみてください。 ファイルのパーミッションは、ちゃんと設定していますよね?
- tsukachan
- ベストアンサー率42% (202/470)
#1です。 ではまずネットワークアナライザ使って正しくパケットが送信されているか確認しましょう。 送信したメールのパケットが無ければスクリプトもしくはミドルウェアの記述・設定ミスなどが考えられます。 次にルータのログを見てみましょう。 ちゃんと外部に送信されていますか? あとSMTPサーバの制限・規制に掛かってないかもう一度確認しましょう。 送信者アドレスがSMTPサーバで許可されていなければ時間がたってからエラーメールが帰ってきます。それを受信できるアドレス使ってないとだめですけどね。 自前のSMTPサーバを使っているのであればそこからのリレーをプロバイダが許可していない事も考えられます。
- yossy-55
- ベストアンサー率55% (5/9)
そもそもこのスクリプトはどこまでが正確に書いてありますか? </FORM>も無いようですし・・・ テスト環境をもう少し書いて頂かないと、回答を得るのは難しいかもしれません。 ある程度、環境を書いておかないと、ソースをじっくり読んでくれる人もいないかもしれません。
- tsukachan
- ベストアンサー率42% (202/470)
どのようなエラーが起こっているか具体例を書かないと判りません ・スクリプトのエラーなのか 単純なスクリプトミスから見直ししょう ・ネットワークのエラーなのか ルータ・ファイヤウォールの設定は正しいですか?ポートは開放してありますか? ・送信サーバのエラー応答なのか 送信サーバーが許可していない経路・ドメインでの送信をしようとしていませんか? このあたりが判らなければプログラムの問題というよりメール送信の仕組みを勉強したほうが良いです。
補足
回答ありがとうございます 勉強不足って事を痛感しました。 スクリプト的にはエラーは出ません というか上のPHP文は本に載っている通り なのでそのまま使用しました。 ルータ・ファイヤウォールの設定は 間違いなく設定してあります 何もエラーが起こらずただ送った物が届かないといった 現象が起こっております。
補足
ごめんなさい 文字数をオーバーしてたので 質問するのに消さないと書き込めなかったので 消してしまいました。 下が【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>