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

締切り済みの質問

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どちらとも設定はでき
送れるはずなのですがメールが届きません
なぜなのでしょうか?
もしよろしければ教えて頂けないでしょうか?
お願いします。

投稿日時 - 2007-02-22 14:33:51

QNo.2774548

困ってます

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

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

回答(5)

ANo.5

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

投稿日時 - 2007-02-22 18:21:13

ANo.4

SMTPサーバは動作していますか?コンソールから、
telnet xxx.xxx.xxx.xxx(SMTPサーバのIPアドレスまたはFQDN) 25
とやってみて、接続できますか?

または、
<?php phpinfo(); ?>
と書いたファイル(phpinfo.phpなどとする)を表示させ、現在の設定がメー
ル送信できる環境かどうか、確認してみてください。

ファイルのパーミッションは、ちゃんと設定していますよね?

投稿日時 - 2007-02-22 16:01:45

ANo.3

#1です。
ではまずネットワークアナライザ使って正しくパケットが送信されているか確認しましょう。
送信したメールのパケットが無ければスクリプトもしくはミドルウェアの記述・設定ミスなどが考えられます。

次にルータのログを見てみましょう。
ちゃんと外部に送信されていますか?

あとSMTPサーバの制限・規制に掛かってないかもう一度確認しましょう。
送信者アドレスがSMTPサーバで許可されていなければ時間がたってからエラーメールが帰ってきます。それを受信できるアドレス使ってないとだめですけどね。
自前のSMTPサーバを使っているのであればそこからのリレーをプロバイダが許可していない事も考えられます。

投稿日時 - 2007-02-22 15:34:53

ANo.2

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

投稿日時 - 2007-02-22 15:23:28

補足

ごめんなさい

文字数をオーバーしてたので
質問するのに消さないと書き込めなかったので
消してしまいました。

下が【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>

投稿日時 - 2007-02-22 15:28:04

ANo.1

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

このあたりが判らなければプログラムの問題というよりメール送信の仕組みを勉強したほうが良いです。

投稿日時 - 2007-02-22 14:46:43

補足

回答ありがとうございます

勉強不足って事を痛感しました。

スクリプト的にはエラーは出ません
というか上のPHP文は本に載っている通り
なのでそのまま使用しました。

ルータ・ファイヤウォールの設定は
間違いなく設定してあります

何もエラーが起こらずただ送った物が届かないといった
現象が起こっております。

投稿日時 - 2007-02-22 15:22:56

あなたにオススメの質問