根据选项选择值发送电子邮件

时间:2011-06-21 23:04:19

标签: php jquery

我想限制只向几个地址发送电子邮件。我的想法是下载你可以邮寄给的人的名字,然后在.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 => "jill@smith.com", 2 => "gjack@smith.com");
$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>

5 个答案:

答案 0 :(得分:4)

如果您想保护地址免受垃圾邮件侵扰,最好不要在html中使用它们。您可以只使用名称或数字作为值,并在php中查找以获取地​​址(来自数据库或固定列表)。

一个例子:

HTML:

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

PHP:

$agents = array(1 => "jill@smith.com", 2 => "gjack@smith.com");
$agent = $agents[(int) $_POST['agents']];
// $agent will have your selected e-mail address

通常您也会使用您的数组填充select,以便它们始终匹配,并且很容易添加新地址。

修改:根据您的评论和修改,您似乎忘记为agents选择命名,它有id但没有name,所以你需要将其更改为:

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

答案 1 :(得分:0)

听起来你知道该怎么做。不是发送电子邮件地址,而是传递名称或某种不同的标识符以匹配服务器端。您可以使用关联数组或switch语句将名称映射到电子邮件地址。是 你要求帮助的是什么??

答案 2 :(得分:0)

您需要一个包含选定名称电子邮件的数组,然后只需为select中的值添加id,并将这些ID用作数组中的索引。 或者,您可以运行查询以按ID选择电子邮件。那就是如果你有一张桌子上有那些人的身份/姓名。 在.php文件中,您可以创建一个新变量(可能是$ agents)并为其分配$ _POST ['agents']的值。如果你要使用db,也可以使用mysql_real_escape_string()。

答案 3 :(得分:0)

在您的mail.php文件中,您必须从POST变量中检索“代理”,就像使用“msg”和“email”一样。

使用类似Firebug的内容来检查通过POST发送的内容。

答案 4 :(得分:0)

使用此:http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/

phpmailer是一个类,它允许你发送邮件到接收者以上的函数,如:$phpmailer->receiver('receiver1'), $phpmailer->receiver('receiver2')等等,然后为你的多个列表,如上所述,将id放在你的下拉列表中然后在你的mail.php代码中,你将id与邮件地址相关联,并用phpmailer发送邮件,以非常简单的方式发送邮件

如果你已经知道它们,你可以将它用于你的邮件

$my_allowed_mails = array (
'id1' => 'mail@mail1.com',
'id2' => 'mail@mail2.com',
'id3' => 'mail@mail3.com'
);

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