PHP将邮件发送到多个电子邮件地址

PHP将邮件发送到多个电子邮件地址,php,forms,Php,Forms,我应该在PHP脚本中更改哪些代码,以便将一封电子邮件发送到20多个电子邮件地址 <?php $email_to = "youremailaddress@yourdomain.com"; // your email address $email_subject = "Contact Form Message"; // email subject line $thankyou = "thankyou.htm"; // thank you page ?> 请给我举个例子。谢谢。您

我应该在PHP脚本中更改哪些代码,以便将一封电子邮件发送到20多个电子邮件地址

<?php

$email_to = "youremailaddress@yourdomain.com"; // your email address
$email_subject = "Contact Form Message"; // email subject line
$thankyou = "thankyou.htm"; // thank you page

?>

请给我举个例子。谢谢。

您的

$email_to = "address@one.com, address@two.com, address@three.com"
需要是以逗号分隔的电子邮件地址列表

mail($email_to, $email_subject, $thankyou);

只需用逗号分隔,如
$email\u to=”youremailaddress@yourdomain.com, emailtwo@yourdomain.com,John Doe“

类似这样的内容:

mail("john@doe.com , marry@mail.com , frank@domain.com", "Test e-mail", "Hi, this is a test message!");

在邮件功能中,您可以在$emailto参数中选择任意数量的收件人,并用逗号分隔。

最好的方法是将所有电子邮件保存在数据库中

您可以尝试此代码,假设您的电子邮件位于数据库中

/*Your connection to your database comes here*/
$query="select email from yourtable";
$result =mysql_query($query);
/以上代码取决于您保存电子邮件地址的位置,因此请确保将其替换为参数/

然后可以从结果中生成逗号分隔的字符串

while($row=$result->fetch_array()){
        if($rows=='')    //this prevents from inserting comma on before the first element
        $rows.=$row['email'];
        else
        $rows.=','.$row['email'];
    }
现在你可以使用

$to = explode(',',$rows); // to change to array

$string =implode(',',$cc); //to get back the string separated by comma
使用上述代码,您可以像这样发送电子邮件

mail($string, "Test", "Hi, Happy X-Mas and New Year");

为了提高代码的可读性,请使用数组并将其内爆为逗号分隔的字符串:-

$recipients = array(
  "youremailaddress@yourdomain.com",
  // more emails
);
$email_to = implode(',', $recipients); // your email address
$email_subject = "Contact Form Message"; // email subject line
$thankyou = "thankyou.htm"; // thank you page

以下代码将完成此任务

<?php

$contacts = array(
"youremailaddress@yourdomain.com",
"youremailaddress@yourdomain.com",
//....as many email address as you need
);

foreach($contacts as $contact) {

$to      =  $contact;
$subject = 'the subject';
$message = 'hello';
mail($to, $subject, $message, $headers);

}

?>

我认为下面的代码会起作用

$tos = array('address1@yourdomain.com', 'address2@yourdomain.com');
foreach ($tos as $to){
    $ok = mail ($to, $subject, $body, $from);
}
if ($ok) {
    echo "Message Send";
} else { 
    echo "Error";
}

以编程方式将提交的表单发送到多个电子邮件地址是可能的,但是最好的做法是创建邮件列表。在代码上,列表地址将被放置,对收件人列表的电子邮件地址的任何更改或更新都可以在不更改代码的情况下完成。

将所有电子邮件地址发送给所有收件人是非常糟糕的做法;你应该使用密件抄送(盲拷贝)


试试这个。它对我有用

$to = $email1 .','. $email2 .','. $email3;
这对我很有效

$recipient_email = 'sales@abc.com,support@xyz.com';

$success = mail($recipient_email, $subject, $body, $headers);

您只需将多个电子邮件地址写入要发送给的人,并将其作为第一个参数传递。 例如:-

mail("FirstEmailId@ABC.com, SecondEmilId@XYZ.com","Subject","Message","From: EmailId@PQR.com");

为什么不在调用
mail
之前将fecthed电子邮件直接放入数组,然后
内爆
?是的,这是正确的。我做了两次同样的事情来展示explode()中发生了什么不幸的是,没有人再阅读手册了。Stackoverflow是手册,手册和文档对深入研究很有用。但是如果你需要一个特定但常见的用例的答案,谷歌搜索和堆栈溢出通常会更快;特别是如果它可以以tweet的大小或单个监视器的高度显示。我希望手册能够灵活地同时提供这两种功能。@AlecSmart:不幸的是,许多手册写得太差,几乎无法使用。值得注意的是,这个示例发送了同一封电子邮件的多份副本。。。而不是将同一封电子邮件发送给多个收件人。这样,在
if
中只会检查最后一封邮件。你应该把
if..else
块放在循环中为什么要在逗号后面加空格?而不是。com,例如地址?如果收件人彼此不认识(或不应该认识),请不要这样做。这样,每个地址都会向每个收件人公开。请注意,您没有包含$headers的var,而且如果您将其放入循环中,它会在每封邮件中多次出现。与以前的回复不同,此建议会向一个组发送一封邮件,但会向每个收件人发送多封邮件。鉴于原始请求的模糊性,任何一个响应都可能是正确的。请注意,正如@Paul Spiegel所指出的,在“收件人”字段中发送群电子邮件是一种不好的形式。最好是密件抄送。密件抄送不会对任何人隐瞒任何事情。你所需要做的就是查看邮件头,你仍然知道所有的电子邮件地址
$recipient_email = 'sales@abc.com,support@xyz.com';

$success = mail($recipient_email, $subject, $body, $headers);
mail("FirstEmailId@ABC.com, SecondEmilId@XYZ.com","Subject","Message","From: EmailId@PQR.com");