Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 向两个地址发送电子邮件?_Php_Email - Fatal编程技术网

Php 向两个地址发送电子邮件?

Php 向两个地址发送电子邮件?,php,email,Php,Email,是否可以将咨询电子邮件发送到两个带有以下代码的地址?如果是这样,我该怎么做 <?php if(isset($_GET['emailme']) && $_GET['emailme'] == 'true') { // to and subject $to = "info@domain.com"; $subject = "Product enquiry"; // get these from query string $name_f

是否可以将咨询电子邮件发送到两个带有以下代码的地址?如果是这样,我该怎么做

<?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";} ?>

PHP邮件会包含额外的标题。使用密件抄送:other@email.address

最简单的修复方法 逗号分隔的
收件人:
虽然邮件允许您使用逗号分隔的收件人列表发送邮件,但这不会保护他们的隐私。这就是为什么我使用了两个调用
mail()
,这样他们就看不到其他电子邮件地址了

使用
BCC:
BCC:
mail()一起使用需要传入headers参数。不建议这样做-请参阅下文

建议
我不建议直接使用
mail()
函数。使用或,因为它们提供了更大的灵活性、安全性和更好的编程API。

mail
接受逗号分隔的收件人列表,如中所述。所以只要将
$to
设置为

$to = "recipient1@domain.com,recipient2@domain.com";
有关有效电子邮件地址规范的更多详细信息,请参阅。

您也可以执行以下操作:


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

希望对您有所帮助

为了将电子邮件单独发送给多个收件人,并且他们的电子邮件位于“收件人:”字段(而不是“密件抄送”字段),您必须编写一个循环

$addresses = ['user1@domain.com','user2@domain.com','user3@domain.com'];
foreach($addresses as $address){
   mail($address, $subject, $message, $headers);
}

只需调用邮件函数两次,每次都有一个自己的收件人地址。(这很简单,所以我将其添加为注释)。这将允许两个收件人看到彼此的电子邮件地址。出于隐私原因,我认为这不能很好地回答这个问题。@Treffynnon,你确定这不是故意的吗?OP对此只字未提。没有(因此没有否决票),但应该指出使用此方法的注意事项。收件人来自同一家公司,所以这并不重要。Bcc。只是说说而已。见RFC-822。(我简直不敢相信我能记住RFC号码!)这将允许两个收件人看到彼此的电子邮件地址。出于隐私原因,我认为这不能很好地回答这个问题。这就是为什么您会使用额外的标头密件抄送。我没有否决您的答案,但调用
邮件
函数两次是多余的-同样可以通过将符合RFC2822的复杂
传递到
地址来实现,或者附加额外的标题。@J0HN所有这些都在我上面的回答中解释过。发送到多个
收件人:
并不能实现同样的效果,附加额外的标题也不是
mail()应该做的事情。
。如果你需要这样做,那么就使用我在回答中提到的一个mailer项目。我会邀请投票人在投票前实际阅读答案,或者提高他们对该主题的理解。这个问题不需要更好的API,你所需要的只是一个额外的标题“Bcc”PHP mail已经接受了哪一个。@EmanuelLandeholm对于易于维护的代码,我决不会像您建议的那样直接使用
mail()
additional\u headers
参数。这很可怕,一旦你开始使用它,你就需要一个更好的API。你的答案仍然会将一个人的电子邮件地址(从
)暴露给另一个人(从
到bcc
)。在这种情况下,这并不重要,但如果你打算建议使用密件抄送(BCC)来防止收件人知道彼此的地址…(这是一个很好的观点!),这就是为什么你的“收件人:”总是与“回复收件人”相同的原因,即主机上的某个帐户,如info@the.site
$addresses = ['user1@domain.com','user2@domain.com','user3@domain.com'];
foreach($addresses as $address){
   mail($address, $subject, $message, $headers);
}