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