PHP отправляет почту на несколько адресов электронной почты - PullRequest
34 голосов
/ 22 декабря 2010

Какой код я должен изменить в этом 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 ]

53 голосов
/ 22 декабря 2010

Для удобства чтения в коде используйте массив и вставьте его в строку, разделенную запятыми:

$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
28 голосов
/ 22 декабря 2010

Ваш

$email_to = "address@one.com, address@two.com, address@three.com"

должен быть списком адресов электронной почты через запятую

mail($email_to, $email_subject, $thankyou);
26 голосов
/ 22 декабря 2010

Просто разделите их запятой, как $email_to = "youremailaddress@yourdomain.com, emailtwo@yourdomain.com, John Doe <emailthree@example.com>".

12 голосов
/ 22 декабря 2010

Следующий код выполнит задачу ....

<?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);

}

?>
7 голосов
/ 06 октября 2017
    $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);

    }
6 голосов
/ 22 декабря 2010

Примерно так:

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

http://myphpform.com/php-form-multiple-recipients.php

2 голосов
/ 22 декабря 2010

Лучшим способом может быть сохранение всех электронных писем в базе данных.

Вы можете попробовать этот код, предполагая, что у вас есть электронная почта в базе данных

/*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");
1 голос
/ 13 июля 2018

Попробуй это.У меня это работает.

$to = $email1 .','. $email2 .','. $email3;
1 голос
/ 16 февраля 2017

Очень плохая практика отправлять все адреса электронной почты всем получателям;Вы должны использовать 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
1 голос
/ 22 декабря 2010

В функции mail вы можете получить столько получателей, сколько захотите, в $ emailto paramater, разделенном запятой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...