我想限制只向几个地址发送电子邮件。我的想法是下载你可以邮寄给的人的名字,然后在.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>
答案 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']];