ホテルを選ぶとき、これだけは譲れない条件TOP3は?

#! /usr/local/php4/bin/php<?
//各種初期設定
$from="info@demo.net";//送信元
$dest="info@demo.net";//宛先
$header="From: $from\nReply-To: $from";//ヘッダ
$subject="お問い合わせ";//件名


//エラーがない場合のみメール送信
if($result=="flash"){
// 文字コードの変換
mb_convert_variables("EUC-JP", "JIS, SJIS, UTF-8", &$SUBJECT, &$COMPANY, &$PERSON, &$EMAIL, &$URL, &$COMMENT);
//言語を日本語に設定
mb_language("Japanese");

$message="省略";

//メールを送信する
mb_send_mail($dest, $subject, $message, $header);
// FlashのAns = Sender.Answer; に'Complete' を返す
print "Content-type: text/plain\n\n";
print "Answer=Complete";
}
?>

というFlashと連動するPHPなのですが、
メール送信完了と表示されるのにメールがきません。

どなたかお分かりになるかた是非教えて下さい。

利用サーバー環境は
OS Linux (Fedora Core 3)
PHP PHP-4.3.11 (CGI版)
Perl Perl-5.8.5
です。よろしくお願いします。

A 回答 (5件)

たびたび。


> 帰宅する部活様のKメールフォーム(PHP)を設置して試行したところちゃんとメールがきました。

とりあえず、帰宅する部活のスクリプトはmb_send_mailではなく、mail関数で送信しているようですね(657行目)。パスの設定は不要です(デフォルト設定でOK)。

今まで分かっている事は、
1. mail関数はちゃんと動いてくれる(sendmailのパス等は問題ない)。
2. mb_send_mailでは返り値がtrueだけどメールが届かない。
サーバのメールログは見れないのですよね?

ひょっとしてmb_send_mailは文字コード関係でひっかかっているかも知れません(メールアドレスが抽出出来ていない)。
mb_convert_variablesのところの動作が怪しいですね。

ところで、今気がつきましたが、提示スクリプトではmb_convert_variables内の変数が全て大文字で書かれていますが、mb_send_mailでは全て小文字です。これでは適用されませんね。確認してみて下さい。

この回答への補足

taketan_mydns_jp様

mb_convert_variablesを削除してmail関数に変更しましたら
無事にメールを受けることができました。

この度は本当にありがとうございました!

<?php
//管理者メールアドレス
$DEST="info@demo.com";

//ヘッダー設定
$header = "From: $DEST\n";
$header .= "Content-type: text/plain; charset=Shift_Jis\n";

//Flashから送られてきた変数を得る
$result=$_POST["result"];
$SUBJECT=$_POST["SUBJECT"];
$COMPANY=$_POST["COMPANY"];
$PERSON=$_POST["PERSON"];
$EMAIL=$_POST["EMAIL"];
$URL=$_POST["URL"];
$COMMENT=$_POST["COMMENT"];

//管理者用メッセージ
$msg =<<<EOD
-------------------------------
件 名:$SUBJECT
御社名:$COMPANY 御中
ご担当者名:$PERSON 様
メール:$EMAIL
URL:$URL
内 容:$COMMENT
-------------------------------
EOD;

//メール送信設定
if($result=="flash"){
//管理者にメールを送信
mail($DEST, "FLASh -> PHP", $msg, $header);
// FlashのAns = Sender.Answer; に'Complete' を返す
print "Content-type: text/plain\n\n";
print "Answer=Complete";
}
?>

補足日時:2007/07/20 20:43
    • good
    • 0
この回答へのお礼

taketan_mydns_jp様有難うございます。
本当に何回も申し訳ございません。

>mb_convert_variables内の変数が全て大文字で書かれていますが、mb_send_mailでは全て小文字です。

Falshからの変数がすべて大文字だから見たいです。

Flashの方には、
function SendData(){
Sender.COMMENT = naiyou_result;
Sender.URL = url_result;
Sender.EMAIL = email_result;
Sender.PERSON = tantousya_result;
Sender.COMPANY = name_result;
Sender.SUBJECT = kenmei_result;

Sender.result = "flash";
Sender.sendAndLoad(Cgi,Sender,"POST") ;
}
と記入されていました。

また、一応自分なりに

/usr/local/php4/bin/php
/usr/sbin/sendmail -t -i
<?
//各種初期設定
$from="info@dress.vc";//送信元
$dest="info@dress.vc";//宛先
$header="From: $from\nReply-To: $from";//ヘッダ
$sub="お問い合わせ";//件名


//エラーがない場合のみメール送信
if($result=="flash"){
// 文字コードの変換
mb_convert_variables("EUC-JP", "Shift_Jis", &$SUBJECT, &$COMPANY, &$PERSON, &$EMAIL, &$URL, &$COMMENT);
//言語を日本語に設定
mb_language("Japanese");

$msg="
-------------------------------
件 名:$SUBJECT
御社名:$COMPANY 御中
ご担当者名:$PERSON 様
メール:$EMAIL
URL:$URL
内 容:$COMMENT
-------------------------------
";

//メールを送信する
mb_send_mail($dest, $sub, $msg, $header);
// FlashのAns = Sender.Answer; に'Complete' を返す
print "Content-type: text/plain\n\n";
print "Answer=Complete";
}
?>

と記入して試行しましたがやはりメールがきませんでした。

お礼日時:2007/07/20 17:57

#2#3です。


> /usr/sbin/sendmailのコマンドパスは記入しなくてもいいのでしょうか?
パスが通ってなければ当然駄目ですね。
phpinfo()で確認し、サーバ指定のものと違った場合、php.ini、あるいは.htaccess等のPHPの環境変数の設定をする必要があるかもしれません。
ちなみにFedora coreではありませんが、私の環境(sendmail_path)では
/usr/sbin/sendmail -t -i
となっています。

それも違っていない場合、、、、サーバの設定を疑う必要があるかもしれません。
可能ならばperlのメールフォームを仮設して試験してみれば、何か分かるかもしれません。(メールサーバがちゃんと動いているか)

この回答への補足

たびたび申し訳ございません。

>perlのメールフォームを仮設
帰宅する部活様のKメールフォーム(PHP)を設置して試行したところちゃんとメールがきました。

使用PHPのURL
http://www.k-php.com/script/kmail/

補足日時:2007/07/20 09:55
    • good
    • 0
この回答へのお礼

サーバーをphpinfoで確認したところ
sendmail_path  /usr/sbin/sendmail -t -i
と書いていました。

質問ばかりで大変申し訳ないのですが、

>パスが通ってなければ当然駄目ですね。
パスは通っていますか?

/usr/sbin/sendmail -t -i
はどこに記入すればいいのですか?

>perlのメールフォームを仮設
いまから他のサンプルを探して実験してみます。

お礼日時:2007/07/20 09:48

#2です。


FlashのアクションスクリプトにAnswer=Completeと返しているようですね。
マニュアルによると、
 メール送信が受け入れられた場合に TRUE 、それ以外の場合に FALSE を返します。
 メールの配送が受け入れられたかどうかが基準であることに注意しましょう。 メールが実際にあて先に届いたかどうかでは「ありません」。
と言う事でTRUEを返しているようですから、メールサーバまでは受け付けられていると言う可能性は高いです。

いくつかのメールアドレス(特に携帯以外)で試してみましたか?
いくつかの送信メールアドレスをスクリプトに直書きして、送信が可能かどうか試してみてはどうでしょうか?
また、試しにmb_send_mail()ではなく、mail()で試してみてはどうでしょうか(送信出来ても文字化けします)?
いくつか試しながら問題を切り分ける事が解決の早道です。
    • good
    • 0
この回答へのお礼

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

mail($dest, $subject, $message, $header);
で試したり
$from="info@demo.net"; //送信元
$dest="info@demo.net"; //宛先
の部分をocnやUSENの自分のメールアドレスにしましたがメールがきません。

PHPに、
/usr/sbin/sendmailのコマンドパスは記入しなくてもいいのでしょうか?

お礼日時:2007/07/19 15:48

> mb_send_mail($dest, $subject, $message, $header);


この返り値を無視しているので、どんなエラーが出てもメール送信完了と出ます。
少なくとも、
$rs = mb_send_mail($dest, $subject, $message, $header);
if($rs){
//送信成功
}else{
//送信失敗
}
としておかないと失敗しようが成功しようが完了と出てしまいます。

もっと大きな問題として、お使いのサーバがメール送信が可能かどうかの確認をしてみる必要があります。
特に最近はOutbound Port25 Blockingと言って25番ポートでのメール送信が出来なくなってきていますので、メールサーバの設定がきちっと出来ているか確認する必要があります。お使いのサーバが自分のサーバなら、メールサーバの設定が必要ですし、レンタルサーバなら管理者に確認下さい。
PHP側からメール送信が出来るようになっている、と言う事ならあまり問題が無いと思いますが、最悪の場合、受信側のメールサーバで送信側のメールサーバがブラックリストに入っていると受信出来無いと言う場合もあります(もうPHPは関係無いですね)。携帯電話へメールする時は特に注意が必要です。

参考まで。
    • good
    • 0
この回答へのお礼

問い合してみたところ、サーバー自体はメール送信が可能でOutbound Port25 Blockingは問題ないそうです。

>$rs = mb_send_mail($dest, $subject, $message, $header);
>if($rs){
>//送信成功
>}else{
>//送信失敗
>}

上記の部分ですが、flashのアクションスクリプトで
Ans = Sender.Answer;
if (Ans.indexOf("Complete") >= 0){
 gotoAndStop("contact_complete");
} else {
 gotoAndStop("contact_error2");
では判定できていませんか?

また、
$rs = mb_send_mail($dest, $subject, $message, $header);
if($rs){
//送信成功
// FlashのAns = Sender.Answer; に'Complete' を返す
print "Content-type: text/plain\n\n";
print "Answer=Complete";
}else{
//送信失敗
}
}
で試行してみましたが、送信完了と表示されましたが、
メールは来ませんでした。

お礼日時:2007/07/19 11:17

メールのログは確認していますか?


おそらく /var/log/maillog
    • good
    • 0
この回答へのお礼

>メールのログは確認していますか?
>おそらく /var/log/maillog

ログは保存していないと思います。
swfとphpをサーバー上に公開しています。

お礼日時:2007/07/18 20:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!