PHP отправлять почту на несколько адресов электронной почты
Какой код я должен изменить в этом сценарии 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
?>
Пожалуйста, дайте мне пример. Спасибо.
13 ответов
Для удобства чтения в коде используйте массив и вставьте его в строку через запятую:
$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
Ваш
$email_to = "address@one.com, address@two.com, address@three.com"
Должен быть списком адресов электронной почты через запятую.
mail($email_to, $email_subject, $thankyou);
Просто разделите их запятыми, как $email_to = "youremailaddress@yourdomain.com, emailtwo@yourdomain.com, John Doe <emailthree@example.com>"
,
Следующий код сделает задачу....
<?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);
}
?>
Что-то вроде этого:
mail("john@doe.com , marry@mail.com , frank@domain.com", "Test e-mail", "Hi, this is a test message!");
$recipients = "test1@test.com,test2@test.com,test3@test.com,test1@test.com";
$email_array = explode(",",$recipients);
foreach($email_array as $email)
{
echo $to = $email;
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
}
Очень плохая практика - отправлять все адреса электронной почты всем получателям; Вы должны использовать Bcc (слепые копии).
$from = "myname@mymail.com";
$recipList = "mailaddress1,mailaddress2,etc";
$headers = "MIME-Version: 1.0\nContent-type: text/html; charset=utf-8\nFrom: {$from}\nBcc: {$recipList}\nDate: ".date(DATE_RFC2822);
mail(null,$subject,$message,$headers); //send the eail
Лучший способ - сохранить все электронные письма в базе данных.
Вы можете попробовать этот код, если у вас есть адрес электронной почты в базе данных
/*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");
Это сработало для меня,
$recipient_email = 'sales@abc.com,support@xyz.com';
$success = mail($recipient_email, $subject, $body, $headers);
Попробуй это. Меня устраивает.
$to = $email1 .','. $email2 .','. $email3;
В функции mail вы можете получить столько получателей, сколько захотите, в $emailto paramater, разделенном запятой.
Вы можете просто написать несколько адресов электронной почты, на которые хотите отправить, и передать их в качестве первого аргумента. Пример:-
mail("FirstEmailId@ABC.com, SecondEmilId@XYZ.com","Subject","Message","From: EmailId@PQR.com");
Я думаю, что следующий код будет работать.
$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";
}
Возможна программная отправка отправленной формы на несколько адресов электронной почты, однако для этого рекомендуется создать список рассылки. В коде будет указан адрес списка, и любое изменение или обновление адресов электронной почты в списке получателей может быть сделано без изменения в коде.