Zend_Mail 不会向发件人地址发送密件抄送

Posted

技术标签:

【中文标题】Zend_Mail 不会向发件人地址发送密件抄送【英文标题】:Zend_Mail will not send bcc to sender address 【发布时间】:2011-11-20 20:24:25 【问题描述】:

当我想向客户和管理员发送邮件时,我遇到了问题。

问题是,客户收到邮件,但如果 from = bcc,则 bcc 不会。有没有我错过的设置? 这可能是服务器问题,还是与 Zend 相关的问题?

我使用的示例代码:

$mail = new Zend_Mail();
$mail->setFrom( 'admin@example.com', 'Admin' )
->addTo( 'customer@anydomain.com', 'Customer' )
->setBodyText( 'Example' )
->addBcc('admin@example.com');

$mail->send();

标头是(来自 $mail->getHeaders()):

array(3) 
  ["From"]=>
  array(2) 
    [0]=>
    string(26) "Admin <admin@example.com>"
    ["append"]=>
    bool(true)
  
  ["To"]=>
  array(2) 
    [0]=>
    string(25) "Customer <customer@anydomain.com>"
    ["append"]=>
    bool(true)
  
  ["Bcc"]=>
  array(2) 
    [0]=>
    string(18) "admin@example.com"
    ["append"]=>
    bool(true)
  

【问题讨论】:

首先,您应该引用您的电子邮件地址,即$mail-&gt;setFrom('admin@example.com'),如果您的问题不是拼写错误的话。 对不起,这只是错字,主要问题是为什么管理员没有收到他发送的密件抄送邮件。我会更正这个例子。 你能看到标题信息并粘贴到这里吗?这将有助于我们进一步调查。您可以通过调用$mail-&gt;getHeaders()方法获取邮件头。 @RakeshS 我已经用标题信息更新了问题! 【参考方案1】:

我在使用Zend_Mail 向发件人地址发送密件抄送时偶然发现了这篇文章,并发现对我来说以下确实有效:

$fromName = 'admin';
$fromMail = 'sender@mail.com';

$mail = new Zend_Mail();
$mail->setFrom($fromEmail, $fromName);
$mail->addBcc($fromMail);

即使 RakeshS 帖子中链接的错误报告 http://framework.zend.com/issues/browse/ZF-8723 仍被标记为未解决。我的 Zend 版本是:

const VERSION = '1.11.12';

如果他们碰巧读到这篇文章,那么了解更新后 Zend 框架的原始发布者的问题是否也会得到解决会很有趣

【讨论】:

【参考方案2】:

我的行为和你一样。如果地址被添加为密件抄送,发件人不会收到邮件。因此,这很可能是 Zend Mail 相关问题(我认为我们的服务器配置不同)。

【讨论】:

【参考方案3】:

ZF 中添加了一个与此问题几乎相似的错误:http://framework.zend.com/issues/browse/ZF-8723

顺便说一句,您还可以在 Zend Mail Add Header method 的帮助下让 BCC 工作。请尝试以下解决方法:

$mail->addHeader('Bcc', 'admin@example.com');

【讨论】:

感谢 Rakesh,我已经尝试过了,但是服务器给出了 500 错误。尽管这将是一个很好的解决方法,但在我看来这不起作用。也许有另一种注入标头的方式。 我试过这样: $mail->addHeader('bcc: admin@example.com');但它会将信件发送 2 次给原始收件人(客户)。 如果你正在使用这个,那么你不应该使用addBcc() 方法。我希望你没有使用它。 看来这个版本可以正确的将邮件发送到地址,但是将标头信息放入邮件正文中: $mail->addHeader("Bcc: admin@example.com\r \n");如果我能纠正这一点,那将是完美的...... :) 可能是它认为它有些不同,你可以试试这个:$mail-&gt;addHeader('bcc: admin@example.com', '', true); 看看会发生什么?【参考方案4】:

如果您只使用不带 TO 的密件抄送收件人 阅读本文

http://framework.zend.com/issues/browse/ZF-3509

【讨论】:

请注意 link-only answers 是不鼓励的,所以答案应该是寻找解决方案的终点(与另一个中途停留的参考相比,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。 请先阅读问题,在我的示例中有一个收件人。问题在于 FROM = BCC。

以上是关于Zend_Mail 不会向发件人地址发送密件抄送的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHPMailer 发送时事通讯(没有密件抄送的多个蒙面收件人)

使用 swiftmailer 密件抄送多个地址

梨邮件功能密件抄送不会发送

使用 PHP 向使用 Gmail API 发送的电子邮件添加密件抄送

Ruby Net::SMTP - 使用密件抄送发送电子邮件:收件人

php邮件密件抄送多个收件人