如何防止收件人看到其他哪些电子邮件地址已收到该电子邮件


How to prevent receipeints from seeing which other email addresses have received an email?

我使用这个脚本发送通知给用户的朋友。问题是所有的收件人都可以看到还有谁收到了这封邮件。我如何调整代码,使电子邮件仍然发送给所有,但他们不能看到谁得到了它?

代码:

    $sql = "SELECT STRAIGHT_JOIN DISTINCT email from
    friend_email_ids WHERE my_id='$id'";
    $result = mysql_query($sql);
    $query = mysql_query($sql) or die ("Error: ".mysql_error());
    if ($result == "")
    {
    echo "";
    }
     echo "";

   $rows = mysql_num_rows($result);
   $emails = array(); 
   if($rows == 0)
   {
   print("");
    }
   elseif($rows > 0)
   {
    while($row = mysql_fetch_array($query))
        array_push($emails, $row['email']);
   {
   $email = $row['email'];

  print("");
  }
  }
$headers = "MIME-Version: 1.0'r'n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1'r'n";
$headers .= "From: $usermail'r'n";
$subject = "$full_name added";
$message = "<html><body>";
$message .= "Hello, <br><br>$full_name posted someth<br><br>";
$message .= "<a href=www.domain.com/signup.php?t=&sign=>Click here.</a><br><br>";
$message .= "</body></html>";
mail(implode(",", $emails), "Subject: $subject",
$message, "$headers" );
echo "";

所有收件人都使用BBC:

密件抄送:收件人得到电子邮件的副本,但他们的电子邮件地址是在交付时自动删除。除了你和密件收件人会知道他们收到了副本,他们的电子邮件地址也会知道不能暴露

-> http://email.about.com/od/emailmanagementtips/qt/How_to_Send_an_Email_to_Undisclosed_Recipients.htm

使用additional_headers字段添加BCC *地址。参见手册

从手册页:

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "'r'n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "'r'n";
$headers .= 'Cc: birthdayarchive@example.com' . "'r'n";
$headers .= 'Bcc: birthdaycheck@example.com' . "'r'n";
// Mail it
mail($to, $subject, $message, $headers);

"birthdaycheck"邮件被隐藏。

*(盲复印)

在你的脚本中,它会变成这样:

$headers = "MIME-Version: 1.0'r'n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1'r'n";
$headers .= "From: $usermail'r'n";
////////////pay attention here
$headers .= "BCC: ".implode(",", $emails)."'r'n";
$to = "youremail@domain.com"; //the mail in the "TO", visible to all. there has to be 1.
////////////////////////
$subject = "$full_name added";
$message = "<html><body>";
$message .= "Hello, <br><br>$full_name posted someth<br><br>";
$message .= "<a href=www.domain.com/signup.php?t=&sign=>Click here.</a><br><br>";
$message .= "</body></html>";
mail($to, "Subject: $subject",
$message, "$headers" );
echo "";

将消息的实际发送放入循环中。这样你就可以把电子邮件单独发给每个收件人,而不是一次发给所有收件人。

从PHP.net你会发现邮件()的密件抄送特性是你需要使用的。

Like zoy (for multiple peeps):

$headers .= 'Bcc: someone@example.com,someone2@example.com,someone3@example.com,someone4@example.com,' . "'r'n";

Haxin快乐!

_wryteowl

相关文章: