php
2009-12-23 82 views -1 likes 
-1

干草 我用这个代码由英国广播公司发送邮件不能正常工作

$to  = "[email protected],[email protected]"; 
$subject = "Mini-mass Emailer"; 
$message = "<a href='#'>Hello World</a>"; 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From: Your Name <[email protected]>' . "\r\n"; 
$headers .= 'Bcc: {$to}' . "\r\n"; 

if(mail($to, $subject, $message, $headers)){ 
    echo 'ok'; 
} 

但看到什么是happend 每个用户看到用户的完整列表

alt text http://img694.imageshack.us/img694/1289/21811933.gif

回答

2

这是因为您已将所有用户放在“到”行中。您也将它们传递到“密件抄送”行,所以只是这样做可能会帮助您,但据我所知,您至少需要一行地址(尽管情况可能并非如此)。对于每个人来说,这样做看起来都很奇怪。

避免这些问题的最佳方法是将电子邮件多次发送给每个用户。要修改的代码示例要做到这一点,我会做类似如下:

$toAddresses = array("[email protected]", "[email protected]"); 
$subject = "Mini-mass Emailer"; 
$message = "<a href='#'>Hello World</a>"; 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From: Your Name <[email protected]>' . "\r\n"; 

foreach ($toAddresses as $to) { 
    if(mail($to, $subject, $message, $headers)){ 
     echo "OK - sent message to {$to}"; 
    } 
} 
+0

但我认为会导致服务器负荷增加 – 2009-12-23 08:55:11

+0

是的,它会这样做,但我认为它不应该是一个问题。如果你必须发送给大量的收件人,每次分解它们并运行子集可能是明智的。如果数量相对较少,额外的负担将不值得担心。 – 2009-12-23 08:59:48

+0

这个号码是200邮箱 – 2009-12-23 09:03:38

3

您对邮件调用正在传递$ to作为to参数,这意味着这些电子邮件将位于to header中,而不是传递一个空字符串。您将信息传递到密件抄送标题,以便电子邮件仍然可以通过这种方式获得。

0

最简单的方法是采取phpguru.org的这个邮件类别: http://www.phpguru.org/static/htmlMimeMail5

在那里,你可以指定与setBcc()应该是“盲目”的地址,这很容易,而且效果很好。我在每个项目中都使用这门课。

最好的问候。

相关问题