在PHP中只发送BCC邮件

时间:2014-11-05 02:23:18

标签: php email bcc

我在txt文件中从邮件列表中提取电子邮件地址。以下内容:

clearstatcache(); 

$file = file("test.txt");

 for ($i = 0; $i < 20; $i++) {  
 $emails .= $file[$i];  
 }

正如您所看到的,我已将它们存储在$ email中。如果我回复$ email,我会收到列出的电子邮件: info@example.com,test @ mydomain.com,admin @ domain.com等。

现在发送BCC:

// recipient
$to  = ''; 

// subject
$subject = 'The subject is here';

// message
$message = 'The body of the email is here';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'From: John Doe <info@example.com>' . "\r\n";
$headers .= 'Bcc: '.$emails . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);

邮件不会被发送到列表,只能发送到info@example.com - 所以这不起作用并发生意外情况 - 由于某些奇怪的原因,来自for循环的20封电子邮件列在顶部电子邮件正文由info@example.com收到

当我尝试手动输入时,它可以很好地工作。所以下面的代码可以工作,但手动输入对我想要实现的目标起反作用。

$test = "info@example.com, test@mydomain.com, admin@domain.com,";

// recipient
$to  = ''; 

// subject
$subject = 'The subject is here';

// message
$message = 'The body of the email is here';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'From: John Doe <info@example.com>' . "\r\n";
$headers .= 'Bcc: '.$test . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);

所以似乎问题出在变量中,但我无法弄清楚为什么它不起作用,因为$ email会回复所有电子邮件地址。

2 个答案:

答案 0 :(得分:0)

空白区域会自动添加到行尾。 for循环中的这一变化解决了这个问题。

$emails .= trim($file[$i]);

答案 1 :(得分:0)

您必须在以下情况后关闭循环: 邮件($ to,$ subject,$ message,$ headers); } 和 $ headers。='密送:'。$电子邮件。为 “\ r \ n” 个; 是 $ headers。='密送:'。$ file [$ i]。为 “\ r \ n” 个;

因此循环将运行整个程序20次。不要将收件人放在$ to中,否则也会发送20次。 经过测试,效果很好。