phpとflashの連携でメールが送信されない - PHPプロ!Q&A掲示板

2854

  • 0P

phpとflashの連携でメールが送信されない

質問日時 / 2010年9月4日 22:11 (最終編集:9月4日 22:38)    回答数 / 12件

Questioner:  sinsinsinsin  このエントリーをはてなブックマークに追加 

キーワード / メール   

質問させてもらいます。
email.phpの内容

<?php
//Type the receiever's e-mail address
$emailAddress = "info@email.com";←ここを自分のメールアドレスしました。
//Type your Site Name
$siteName = "Company Name";


$contact_name = $_POST['name'];
$contact_email = $_POST['email'];
$contact_subject = $_POST['subject'];
$contact_message = $_POST['message'];

if( $contact_name == true ) {
$sender = $contact_email;
$receiver = $emailAddress;
$client_ip = $_SERVER['REMOTE_ADDR'];

$email_body = "The Name Of The Sender: $contact_name \nEmail: $sender \n\nSubject: $contact_subject
\n\nMessage: \n\n$contact_message \n\nIP ADDRESS: $client_ip \n\n$siteName";

$emailAutoReply = "Hi $contact_name, \n\nWe have just received your E-Mail. We will get
in touch in a few days. Thank you!  \n\n$siteName ";

$extra = "From: $sender\r\n" . "Reply-To: $sender \r\n" . "X-Mailer: PHP/" . phpversion();
$autoReply = "From: $receiver\r\n" . "Reply-To: $receiver \r\n" . "X-Mailer: PHP/" . phpversion();

mail( $sender, "Auto Reply: $contact_subject", $emailAutoReply, $autoReply );

if( mail( $receiver, "New E-Mail - $contact_subject", $email_body, $extra ) ) {
echo "success=yes";
} else {
echo "success=no";
}
}
?>




ActionScriptの内容

function clearField()
{
    txtField1.text = label1;
    txtField2.text = label2;
    txtField3.text = label3;
    txtField4.text = label4;
    txtField5.text = label5;
    txtField6.text = label6;
} // End of the function
label1 = "Name";
label2 = "Company";
label3 = "E-mail";
label4 = "Phone";
label5 = "Subject";
label6 = "Message";
countField = 6;
clearField();
var arrayLabel = new Array();
for (i = 1; i < countField + 1; i++)
{
    txtField = this["txtField" + i];
    txtField.index = i;
    arrayLabel[i] = this["label" + i];
    txtField.tabIndex = i;
    txtField.onSetFocus = function ()
    {
        if (this.text == arrayLabel[this.index])
        {
            this.text = "";
        } // end if
    };
    txtField.onKillFocus = function ()
    {
        if (this.text == "")
        {
            this.text = arrayLabel[this.index];
        } // end if
    };
} // end of for
btnClear.onRollOver = function ()
{
    this.gotoAndPlay("over");
};
btnClear.onRollOut = btnClear.onReleaseOutside = function ()
{
    this.gotoAndPlay("out");
};
btnClear.onRelease = function ()
{
    clearField();
};
btnSubmit.onRollOver = function ()
{
    this.gotoAndPlay("over");
};
btnSubmit.onRollOut = btnSubmit.onReleaseOutside = function ()
{
    this.gotoAndPlay("out");
};
btnSubmit.onRelease = function ()
{
    if (_root.content.page5.contactform.txtField1.text == label1 || _root.content.page5.contactform.txtField2.text == label2 || _root.content.page5.contactform.txtField3.text == label3 || _root.content.page5.contactform.txtField4.text == label4 || _root.content.page5.contactform.txtField5.text == label5 || _root.content.page5.contactform.txtField6.text == label6)
    {
        gotoAndStop(3);
    }
    else
    {
        _root.pages.page5.contactform.loadVariables("email.php", "POST");
        gotoAndStop(2);
    } // end else if
};
stop ();



使えるようにするにはどうしたらよいでしょうか?
よろしくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01shimix「メールが送信されない」ということですが、具体的に
┃┗A01-1sinsinsinsinレスありがとうございます。 <? phpinfo(); ?>のス
┃ ┗A01-1-1shimix><? phpinfo(); ?>のスクリプトでPHP Version 5.1.6と
┃  ┣A01-1-1-1sinsinsinsin<?php print (date ("Y年m月d日(D) H時i分s秒"));
┃  ┗A01-1-1-2sinsinsinsinemail.phpに下記を追加して直接email.phpにアクセスし
┃   ┗A01-1-1-2-1shimix前のレスで書いた「print_rもしくはvar_dumpで」$_POS
┃    ┗A01-1-1-2-1-1sinsinsinsin申し訳ないですスキル不足でどうすればいいのか正直わ
┃     ┗A01-1-1-2-1-1-1shimix><?php >print_r($_POST) >?> > >これを記載した
┃      ┗A01-1-1-2-1-1-1-1sinsinsinsinshimixさん、ありがとうございました。 今後ともよろ
┣A02magicflute2ASは古いバージョンかLite。 大半のASコードは、表題
┃┗A02-1sinsinsinsin下記のHTMLフォームから送信したところ送信されました
┗A03kaitauPHPでは、クライアント側からのリクエストデータでのH

回答一覧

並び替え:

A01
answerershimix [9月4日 22:38] (最終編集:9月4日 22:44)

「メールが送信されない」ということですが、具体的にどうなるのですか?

email.phpが呼び出されているのは間違いないのですね?success=yes(またはsuccess=no)は表示されているのでしょうか(返り値のチェックが「2通目」の送信時だけというのもヘンですが)。

またお使いのサーバで、mailでの送信自体が問題ないことは、他のスクリプト(やテストスクリプト)で確認されていますか?

(追記)
タイトルを編集されたようですね。「phpとflashの連携」ということですが、phpスクリプトで$_POSTで受け取った内容をファイルに書き出すとかすればphpの問題なのかflashの問題(そもそもキチンとPOSTされていない)かはチェック可能だと思います。まずはそれをチェックしてください(flashの問題であれば私はレス出来ませんので)。

この意見に回答する

ツリーへ TOPへ

A01-1
replyersinsinsinsin [9月4日 23:02]

レスありがとうございます。

<? phpinfo(); ?>のスクリプトでPHP Version 5.1.6と確認できました。

phpスクリプトで$_POSTで受け取った内容をファイルに書き出すにはどのようにすればいいですか?

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyershimix [9月4日 23:44]

><? phpinfo(); ?>のスクリプトでPHP Version 5.1.6と確認できました。

では、print_rもしくはvar_dumpで$_POSTをブラウザに出力してみればいいのでは?

#ファイルに書き出す・・というのは「書き出せるならば」という前提でのデバッグ手法ですが
#そこ(ファイル出力)から尋ねられるとちょっと返答に困りますので(汗

この意見に回答する

ツリーへ TOPへ

A01-1-1-1
replyersinsinsinsin [9月5日 08:02]

<?php
 print (date ("Y年m月d日(D) H時i分s秒"));
$contact_name = $_POST['name'];
?>

このようなファイルを作ってブラウザで確認したところ
表示されたのは下記だけでした。

2010709月05日(Sun) 07時25分44秒

何か間違っていたら、教えてほしいです、よろしくお願いします。

この意見に回答する

ツリーへ TOPへ

A01-1-1-2
replyersinsinsinsin [9月5日 09:44]

email.phpに下記を追加して直接email.phpにアクセスしたら
sample.txtに(ファイルへの書き込みサンプル)と記載されてました。

$fp = fopen("sample.txt", "w");
fwrite($fp, "ファイルへの書き込みサンプル");
fclose($fp);

ということはPHPには問題が無いと言うことでしょうか?

この意見に回答する

ツリーへ TOPへ

A01-1-1-2-1
replyershimix [9月5日 15:26]

前のレスで書いた「print_rもしくはvar_dumpで」$_POSTのチェックをしていただけないのは何故ですか?phpの$_POSTにどういう内容が渡されているかは、それで確認するしかないと思いますけど・・。

>$contact_name = $_POST['name'];

変数にいれただけで表示もしないのでは、何もわかりませんよね。まったく意味のない記述だと思いますけど、printする予定でもあったのでしょうか?それでも$_POST['name']以外のものはわかりませんし、nameという添え字になっていないかもしれないというチェックは出来ません。

なので($_POSTの添え字と値をまとめてチェックするために)「print_rもしくはvar_dumpで」と書いています。

この意見に回答する

ツリーへ TOPへ

A01-1-1-2-1-1
replyersinsinsinsin [9月5日 15:58] (最終編集:9月6日 09:03)

申し訳ないですスキル不足でどうすればいいのか正直わかりませんでした。
間違っているかもしれませんが、このようにやってみました。

<?php

print_r($_POST)

?>


これを記載したファイルにアクセスしたら

Array ( )

と表示されました。

あとPHPでメールが送信するのか確認してみました。

<?php

mb_language("Japanese");
mb_internal_encoding("SHIFT-JIS");

if (mb_send_mail("xxxx@mail.xxxx.net", "テストメール", "これはテストです。", "From: from@example.com")) {
  echo "メールが送信されました。";
} else {
  echo "メールの送信に失敗しました。";
}

?>

これを記載したファイルにアクセスしたら
メールが受け取れました。

よろしくお願いします。

この意見に回答する

ツリーへ TOPへ

A01-1-1-2-1-1-1
replyershimix [9月5日 17:37] (最終編集:9月5日 17:39)

><?php
>print_r($_POST)
>?>
>
>これを記載したファイルにアクセスしたら
>Array ( )
>と表示されました。

email.phpに何も渡されていないようです。↓の「magicflute2 [9月5日 16:29]」でmagicflute2さんが言及されてますが、フォームから正しくPOSTされていませんね。

∴ phpの問題ではないようです。私はこれにて失礼します・・

この意見に回答する

ツリーへ TOPへ

A01-1-1-2-1-1-1-1
replyersinsinsinsin [9月6日 08:15]

shimixさん、ありがとうございました。
今後ともよろしくお願いします。

この意見に回答する

ツリーへ TOPへ

A02
answerermagicflute2 [9月5日 16:29]

ASは古いバージョンかLite。
大半のASコードは、表題の件に関係ない。

  1. _root.pages.page5.contactform.loadVariables("email.php", "POST");
  2. gotoAndStop(2);
ここで何をしたいかの説明が必要。
loadVariablesの意味が不明。

contactformだから、お問合せフォームなのだろう。
なら、ボタンクリックイベントで、PHPに送信する必要があるのだが、
LoadVars, SendAndLoadが見当たらない。
送信処理は、2フレームで行われているのだろうか。

--

HTMLフォーム--[POST]-->email.phpで、送信できる事を確認した上で、
AS掲示板にて相談するのが宜しいかと思います。

この意見に回答する

ツリーへ TOPへ

A02-1
replyersinsinsinsin [9月6日 08:30] (最終編集:9月6日 12:00)

下記のHTMLフォームから送信したところ送信されました。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>sample</title>
</head>
<body>
<form action="email.php" method="post">
  件名:<br>
  <input type="text" name="subject" size="30" value=""><br>
  送信者名:<br>
  <input type="text" name="name" size="30" value=""><br>
  メールアドレス:<br>
  <input type="text" name="mail" size="30" value=""><br>
  本文:<br>
  <textarea name="message" cols="30" rows="5"></textarea><br>
  <br>
  <input type="submit" value="送信する">
</form>
</body>
</html>


下記が受信された内容です。

The Name Of The Sender: aaaaaaaaaaaaaaa 
Email: 

Subject: aaaaaaaa


Message: 

aaaaaaaaaaaaaaaaaaaaaaaaaaaa 

IP ADDRESS: xxx.xxx.xx.xxx 

http://xxxx.xxxx.com/


--

HTMLフォームで送信されるか確認したところsuccess=yesと表示されましたが送信されました。

AS掲示板にて相談してみたいと思います。

ご協力ありがとうございます。

この意見に回答する

ツリーへ TOPへ

A03
answererkaitau [9月6日 10:52]

PHPでは、クライアント側からのリクエストデータでのHTTPヘッダに
content-type:application/x-www-form-urlencoded (もしくはmultipart/form-data)が
ついていないとボディ部の内容を$_POST変数に格納してくれなかったと思います。

もし、質問の機能でflash から送られるPOSTデータに同様に該当ヘッダがついていないのであれば、
なんとかヘッダが送付されるようにするか、或いはPHP側で
$_POSTに頼ることなくfopen('php://input')から読み込んで自力でパースする必要があります。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
負荷時のmysql_connect()エラー
 このエントリーをはてなブックマークに追加 
A
これはPHPというよりOSまたはMySQLのコミュニティで質問されたほうがいいと思います。 ぱっと思いついた範囲で記すと MySQL等のDBに「ある時点において同時に接続可能なクライアントの最大数」に制限があるよう...

>>続きを読む

今回のような実践的な経験がエンジニアのキャリアに繋がると思います。是非サービスを成功させて下さい!

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)