php
2009-12-23 48 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()應該是「盲目」的地址,這很容易,而且效果很好。我在每個項目中都使用這門課。

最好的問候。

相關問題