由英国广播公司发送邮件不工作

时间:2009-12-23 08:43:40

标签: php

干草 我用过这段代码

$to       = "mial@live.com,mail@yahoo.com";
$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 <me@mydomain.com>' . "\r\n";
$headers .= 'Bcc: {$to}' . "\r\n";

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

但看看发生了什么 每个用户都可以看到完整的用户列表

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

3 个答案:

答案 0 :(得分:3)

您对邮件的调用是将$ to作为to参数传递,这意味着这些电子邮件将在to标头中尝试传递空字符串。您正在将信息传递到密件抄送标题中,因此电子邮件仍然应该以这种方式传递给他们。

答案 1 :(得分:2)

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

避免这些问题的最佳方法是多次向每位用户发送一次电子邮件。要修改代码示例以执行此操作,我将执行以下操作:

$toAddresses = array("mial@live.com", "mail@yahoo.com");
$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 <me@mydomain.com>' . "\r\n";

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

答案 2 :(得分:0)

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

在那里你可以用setBcc()指定应该是“盲目”的地址,它非常简单并且效果很好。我在每个项目中都使用这个类。

最诚挚的问候。