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