Отправить письмо на два адреса? - PullRequest
2 голосов
/ 20 января 2012

Можно ли отправить запрос по электронной почте на два адреса с кодом ниже? Если так, как бы я это сделал?

<?php if(isset($_GET['emailme']) && $_GET['emailme'] == 'true') { 
    // to and subject
    $to = "info@domain.com"; 
    $subject = "Product enquiry"; 

    // get these from query string
    $name_field = $_GET['name'];
    $hospital_field = $_GET['hospital']; 
    $department_field = $_GET['department'];
    $email_field = $_GET['email']; 
    $tel_field = $_GET['tel']; 

    // get wishlist
    $query = "SELECT w.*, p.product_name, q.quantity_name, o.product_code, o.description 
                FROM wishlistbasket w, products p, product_quantities q, product_options o 
                WHERE sesid = '$sesid' AND w.pid = p.id AND w.qid = q.id AND w.oid = o.id ORDER BY w.pid, w.qid, w.oid";
    $res = mysql_query($query);
    $wish_list = '';
    if($res){
        while($row = mysql_fetch_assoc($res)) {
            if ($row['qty'] == 1) {
                $row['qty'] = "Quote";
            } else if ($row['qty'] == 2) {
                $row['qty'] = "Sample";
            } else if ($row['qty'] == 3) {
                $row['qty'] = "Quote and Sample";
            }
            $wish_list .= $row['product_code'] . ' - ' . $row['product_name'] . ', ' . $row['quantity_name'] . ', ' . $row['qty'] . '' . $row['product_options'] . "
            \n";
        }
    }

    // build mail body
    $body = "Hello,\n\n
You have an enquiry from the website, please see the details below:\n\n 
Name: $name_field\n
Hospital/institution: $hospital_field\n
Department: $department_field\n 
E-Mail: $email_field\n 
Tel: $tel_field\n 
Wishlist:\n $wish_list"; 
    mail($to, $subject, $body); 
    echo "Thanks";} ?>

Ответы [ 5 ]

16 голосов
/ 20 января 2012

mail принимает разделенный запятыми список рецептов, как указано в Руководство . Так что просто установите $to на что-то вроде

$to = "recipient1@domain.com,recipient2@domain.com";

См. RFC2822 для получения более подробной информации о действительных спецификациях адресов электронной почты.

2 голосов
/ 20 января 2012

Вы также можете сделать:


$to = "first@example.com, second@example.com";
mail($to, $subject, $body);

Надеюсь, это поможет

2 голосов
/ 20 января 2012

Самое простое исправление

...
// build mail body
    $body = "Hello,\n\n
You have an enquiry from the website, please see the details below:\n\n 
Name: $name_field\n
Hospital/institution: $hospital_field\n
Department: $department_field\n 
E-Mail: $email_field\n 
Tel: $tel_field\n 
Wishlist:\n $wish_list"; 
    mail($to, $subject, $body);
    mail($to2, $subject, $body);
    echo "Thanks";
...

Разделенные запятыми To:

Хотя почта позволит вам отправлять через список получателей через запятую, это не сохранит их конфиденциальность.Вот почему я использовал два вызова для mail(), чтобы они не могли видеть адреса электронной почты других пользователей.

Использование BCC:

Использование BCC: с mail() требует передачи впараметр заголовков.Это не рекомендуется - см. Ниже.

Предложения

Я бы не рекомендовал использовать функцию mail() напрямую.Используйте SwiftMailer или PHPMailer , поскольку они обеспечивают большую гибкость, безопасность и лучший API программирования.

1 голос
/ 20 января 2012

PHP почта занимает дополнительные заголовки.Использовать скрытую копию: other@email.address

0 голосов
/ 28 января 2016

Чтобы отправить электронное письмо нескольким получателям по отдельности, указав их адрес электронной почты в поле TO: (не в поле BCC), вам необходимо написать цикл.

$addresses = ['user1@domain.com','user2@domain.com','user3@domain.com'];
foreach($addresses as $address){
   mail($address, $subject, $message, $headers);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...