2011-06-21 5 views
0

私はいくつかのアドレスにメールを送信することを制限したいと思います。私のアイデアは、あなたが郵送できる人の名前でドロップダウンし、次に.phpファイルでドロップすることでした。選択された名前は(迷惑メールから守るために)電子メールアドレスにマッチして送信されました。これが必要でない場合は、ドロップダウンの値は電子メールアドレスだけでもかまいません。スクリプトの設定方法は、あらかじめ指定した1つのアドレスにしか送信できません。オプションの選択値に従ってメールを送信

私はここからjQueryとPHPを使用しています:http://www.twostepmedia.co.uk/send-html-form-results-in-an-email-from-php-using-jquery-ajax/

をPHP

<?php 
$email = $_POST['email']; 
$msg = $_POST['msg']; 
$agents = array(1 => "[email protected]", 2 => "[email protected]"); 
$agent = $agents[(int) $_POST['agents']]; 
// $agent will have your selected e-mail address 
$message = "From: " . $email . " Message: " . $msg; 
$message = wordwrap($message, 70); 
mail($agent, 'The Subject', $message); 
?> 

jQueryの

<script type="text/javascript" charset="utf-8"> 
    $(document).ready(function() { 
        $("#submit").click(function(){ 
      var data = $("#contact").serialize(); 
       $.ajax 
        ({ 
        type: "POST", 
        url: "mail.php", 
        data: data, 
        cache: false, 
        success: function() 
         { 
          alert("Thank you"); 
         } 
        }); 
       return false; 
     }); 
    }); 
</script> 

フォーム

<form id="contact"> 
<p>From</p><input type="text" name="email" /> 
<p>Message</p><textarea name="msg"></textarea> 
<br /> 
<select id="agents"> 
    <option value="1">Jill Smith</option> 
    <option value="2">Jack Smith</option> 
</select> 
<br /> 
<input type="submit" id="submit" value="Send" /> 
</form> 
+0

チュートリアルをお探しですか? – hakre

+0

ガイ、あなたの質問は何ですか?あなたの問題とあなたの質問を簡潔に述べてください。 – FinalForm

+0

phpファイルでは、ドロップダウンで渡された値を読み込み、アドレスリスト(好ましくはphpファイル自体)に一致させてから、そのアドレスに電子メールを送信したいと思います。私は、ドロップダウンの値を読んで、リストにマッチさせ、その結果を郵送するように挿入しています。 – Thomas

答えて

4

スパムからアドレスを保護したい場合は、htmlに入れないほうがよいでしょう。名前または数値だけを値として使用し、phpで検索してアドレスを取得することができます(データベースまたは固定リストから)。

例:

HTML:

<select name="agents" id="agents"> 
    <option value="1">Jill Smith</option> 
    <option value="2">Jack Smith</option> 
</select> 

PHP:彼らは常に一致するとit'sよう

$agents = array(1 => "[email protected]", 2 => "[email protected]"); 
$agent = $agents[(int) $_POST['agents']]; 
// $agent will have your selected e-mail address 

通常は、selectを埋めるためにも、あなたの配列を使用します新しいアドレスを簡単に追加できます。

編集:あなたのコメントや編集に基づいて、あなたがagents選択、それはidを持つ名前を忘れてしまったようだが、何のnameは、あなたがそれを変更する必要はありません

<select name="agents" id="agents"> 
+0

これまでこれは動作していません。 '$ msg = $ _POST ['msg'];'の下にphpファイルの最後の行として 'mail($ agent、 'The Subject'、$ message);を置いています。 – Thomas

+0

@Thomas実際のPHPとHTMLを表示するには、あなたの投稿を編集する必要があります。 – jeroen

+0

@Thomasところで、 'var_dump($ _ POST)'の結果は何ですか? – jeroen

0

あなたは何を知っているようですねする。電子メールアドレスを送信する代わりに、サーバー側で一致させるために、名前や別の識別子を渡します。連想配列またはswitch文を使用して、名前を電子メールアドレスにマップすることができます。 は、の助けを求めていますか?

+0

phpファイルでは、ドロップダウンで渡された値を読み込み、アドレスのリスト(好ましくはPHPファイル自体)に一致させてからそのアドレスに電子メールを送信したいと思います。私は、ドロップダウンの値を読んで、リストにマッチさせ、その結果を郵送するように挿入しています。 – Thomas

+0

これでメールアドレスを渡しています。代わりに、単に名前を渡します。単純なswitch文または連想配列で一致するだけで十分です。私はあなたが別のPHPファイルにすべての名前を保持する必要はないと思う。実際に長い名前のリストがある場合は、DBに格納して、ユーザーテーブルのIDを使用してレコードを照合し、その方法で電子メールアドレスを取得する方が簡単です。 http://php.net/manual/en/control-structures.switch.php – thescientist

0

あなたがしたいです選択した名前の電子メールで配列が必要な場合は、selectに値のIDを追加し、配列のインデックスとしてこれらのIDを使用します。 または、IDでメールを選択するためのクエリを実行できます。あなたがその人のID /名前のテーブルを持っていればそれがあります。 .phpファイルでは、新しい変数(おそらく$ agents)を作成し、$ _POST ['agents']の値を割り当てます。 dbを使用する場合は、mysql_real_escape_string()も使用してください。

+0

さて、ジェーレンが言っていたことはかなり大丈夫です。 –

0

mail.phpファイルでは、 "msg"と "email"のようにPOST変数から "agent"を取得する必要があります。

Firebugのようなものを使用して、POST経由で何が送信されているかを確認します。

0

使用この:あなたにIDを入れ、上記の言ったように、あなたの複数のリストについては、次にように$phpmailer->receiver('receiver1'), $phpmailer->receiver('receiver2')と:http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/

phpmailerのは、あなたのような機能を持つ受信機で複数のメールを送ることができますクラスですドロップダウンリストとあなたのmail.phpコードのidをメールアドレスに関連づけ、非常に簡単な方法でメールを送るphpmailerであなたのメールを送ります。

$my_allowed_mails = array (
'id1' => '[email protected]', 
'id2' => '[email protected]', 
'id3' => '[email protected]' 
); 

    $receiver = $my_allowed_mails[$_POST['mail_choosed']]; 
+0

@Thomas:私のコードは、あなたがPHPコード内のIDで尋ねたようなものです – darkylmnx