• ベストアンサー
  • 困ってます

メール送信フォーム

  • 質問No.1060914
  • 閲覧数168
  • ありがとう数3
  • 気になる数0
  • 回答数7
  • コメント数0

お礼率 24% (15/62)

メール送信フォームを作成しているのですが、
悩み続けて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{ }
?>

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

  • 回答No.7
  • ベストアンサー

ベストアンサー率 50% (59/117)

>sendmail_fromでme@localhost.com
この件なのですが、
http://okweb.jp/kotaeru.php3?q=564411
http://de3.php.net/manual/ja/ref.mail.php
このマニュアルを見ると、
sendmail_from string
>Windows環境でPHPから送信されるメールにおいて
>"From:" に使用する メールアドレスを指定します。
となっていますので、メールが送られない事とはあまり関与しないように思います。
ちなみに当方の設定も同じでした。
ですので、マニュアルに沿ってPHPの設定を見直し、
Linux側でsendmailのできる環境であるか、PATHがどうなっているか
を確認されてはいかがでしょうか。
詳しくもないのに長々とお邪魔致しました。
ご参考までに。

その他の回答 (全6件)

  • 回答No.6

ベストアンサー率 50% (59/117)

私も詳しくはわからないのですが、過去の質問に以下のようなものがありました。
http://okweb.jp/kotaeru.php3?q=860294
http://okweb.jp/kotaeru.php3?q=869145
なので、もしかしたら何らかの設定が足りないのかもしれません。
お力になれなくて申し訳ありません。
ご参考までに。
  • 回答No.5

ベストアンサー率 50% (59/117)

度々失礼致します。
当方では、以下のような感じで正常に動作が確認できました。

//sdmltest.html
<html>
<body>
<form method="POST" action="sdmltest.php">
<table border="1" 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.co.jp">商品</option>
</select>
</td>
</tr>
<tr>
<td >
<textarea name="message"></textarea>
</td>
</tr>
<tr>
<td>
<input type="hidden" name="action" value=post>
<input type="hidden" name="subject" value="質問">
<input type="submit" name="submit" value="送信">
</td>
</tr>
</table>
</form>
</body>
</html>

//sdmltest.php
<?php
print_r($_POST); //試しにPOSTの内容を表示
print "<br>";
foreach($_POST as $key => $value) {
$$key = $value;
}
$subject = "testmail";
if( $submit ){
SendMessage();
} else {
echo "missing!";
}
function SendMessage(){
global $to,$subject,$message,$from;
echo $to . $subject . $message . $from . "<br>";
//globalが動いているか確認のため表示
$header = "From: $from";
mb_language("Japanese");
if(mb_send_mail($to, $subject, $message, $header)){
print "メールが送信されました。$to";
} else {
print "メールの送信に失敗しました。";
}
}
?>

試してみて、POSTもglobalも問題無しなのに、
「失敗しました」
と表示されるようであれば、レス下さると当方も勉強になります。
しつこくすみません。
ご参考までに。
補足コメント
onoyoko

お礼率 24% (15/62)

わかりやすいコメント、本当にありがとうございます。
今試しました。

Array ( [from] => xxx@hotmail.com
[to] => xxx@hotmail.com
[message] => test
[action] => post
[subject] => 質問
[submit] => 送信 )
で値は取得しました。

メッセージはメールが送信されましたと帰ってきます。
ですがメールが届かないのです、会社のメールアドレスとホットメール両方試しましたが、両方のアドレスに届きません.
PHPインフォで気になる所があるのですが

sendmail_fromでme@localhost.com
と記載されていますが、この意味はこのサーバー意外のメールアドレス宛には送れない?って事でしょうか?
投稿日時:2004/10/30 00:53
  • 回答No.4

ベストアンサー率 14% (1/7)

register_globals

register_globalsの値はONになってますか?
PHP4.2.x系だとOFFになってるんじゃないでしょうか?

$PHP_SELFを$_SERVER['PHP_SELF']にしてもダメですか?
  • 回答No.3

ベストアンサー率 50% (59/117)

><FORM METHOD="POST" ACTION="<?php echo $PHP_SELF; ?>" ENCTYPE="text/plain">
ここを見て、もしかしてと思ったのですが、
質問文のソースは全部一つのスクリプトファイル内の記述ですか?
だとしたら、html の部分をsendmail.html として、
php の部分を sendmail.php として、
更に、
><FORM METHOD="POST" ACTION="<?php echo $PHP_SELF; ?>" ENCTYPE="text/plain">
→action="sendmail.php"
として、試してみては。

念のための確認ですので、違っていたら失礼しました。
  • 回答No.2

ベストアンサー率 50% (59/117)

では、確かめて欲しいことを2、3点。
<input type="submit" name="submit" value="送信">
などとして、formの内容を送っていますか?

foreach($_POST as $key => $value) {
$$key = $value;
}
などとして、POSTしたデータを受け取っていますか?
または、自動でそうなるように設定されていますか?
http://okweb.jp/kotaeru.php3?q=1056390

>if($action == "post"){ SendMessage(); }
上の2点がOKであれば、ここは、
if($submit){ SendMessage(); }
などとすれば良いと思います。
>global $to,$subject,$meessage,$from;
→$message
など、タイプミスが見られますので、本文の確認もしてみてください。

参考として、URL載せて置きます。
  • 回答No.1

ベストアンサー率 50% (59/117)

タイプミスが大分あるのですが、それはともかく…。
何ができなくて困ってらっしゃるのでしょうか?
例えば、メールは送られてくるが中身が真っ白とか??
できれば補足お願い致します。
補足コメント
onoyoko

お礼率 24% (15/62)

急いでタイプしたのでへんな質問をしていますね、すみません。

メールが送れません、エラーメッセージはでません。
投稿日時:2004/10/29 09:21
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ