2012-12-21 17 views
3

我有一個PHP腳本,發送電子賀卡在函數調用多個收件人(採用逗號分隔的電子郵件地址和mail()組成的數組單獨各一個)。但是,在查看收到的電子郵件時,每個客戶都可以看到電子郵件發送到的其他地址,這使我相信它們都是通過一封電子郵件發送的,儘管需要單獨撥打mail()。這裏是我當前的代碼:PHP郵件隱藏其他收件人地址有多個函數調用

<?php 
$headers = "From: ".$_POST['email']."\r\n"; 
$headers .= "Content-type: text/html\r\n"; 
$array=explode(",", $_POST['sendto']); 
for ($i = 0; $i < count($array); ++$i) { 
    mail(trim($array[$i]), "Happy Holidays!", $body, $headers); 
} 
?> 

我該如何解決這個問題,以便收件人只能看到在「收件人」字段的電子郵件地址? 謝謝!

+0

不知道如何將它分解給你,但你的代碼會發送1封電子郵件給1個人,所以沒有人會看到除自己以外的任何人。神祕的代碼一次發送所有的電子郵件,並做你想做的,但你的也是。 –

+0

不正確。我知道應該發生什麼,但事實並非如此。你可以看到所有的地址。除了這個之外,我從未在任何服務器上發生過這種情況。 – Aehmlo

回答

6

你想使用的是BCC字段。

代碼:

<?php 

$_POST['email'] = str_replace(array("\n", "\r"), '', $_POST['email']); 
$_POST['sendto'] = str_replace(array("\n", "\r"), '', $_POST['sendto']); 

$headers = "From: " . $_POST['email'] . "\r\n" 
     . "Content-Type: text/html\r\n" 
     . "BCC: " . $_POST['sendto'] . "\r\n"; 
mail($_POST['email'], 'Happy Holidays!', $body, $headers); 

?> 

發送郵件給發件人,但BCC收件人。此外,我從BCC和FROM字段中刪除\ r和\ n字符,否則將允許郵件標頭注入攻擊。請務必對$ body做同樣的事情。

相關問題