使用 swiftmailer 密件抄送多个地址
Posted
技术标签:
【中文标题】使用 swiftmailer 密件抄送多个地址【英文标题】:bcc multiple addresses with swiftmailer 【发布时间】:2013-10-08 20:46:03 【问题描述】:我使用下面的 php 代码向一个地址发送电子邮件并密件抄送 2 个其他地址。它可以很好地发送给收件人,但我只能将其发送到 2 个密件抄送地址之一。 (请参阅代码中的 cmets 了解我尝试过的内容)
但奇怪的是,$result 以 3 的形式返回,因此它似乎试图发送第二封密件抄送电子邮件,但从未成功。
<?php
$tracker='tracking@pnrbuilder.com';
$subject = $_POST['subject'];
$sender = $_POST['sender'];
$toEmail=$_POST['toEmail'];
$passedInEmail=stripslashes($_POST['message']);
$passedInEmail=preg_replace('/ /',' ',$passedInEmail);
require_once('swiftLib/simple_html_dom.php');
require_once('swiftLib/swift_required.php');
$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
// Create the message
$message = Swift_Message::newInstance();
//turn the meesage into an object using simple_html_dom
//so we can iterate through and embed each image
$content = str_get_html($passedInEmail);
// Retrieve all img src tags and replace them with embedded images
foreach($content->find('img') as $e)
if($e->src != "")
$value = $e->src;
$newValue = $message->embed(Swift_Image::fromPath($value));
$e->src = $newValue;
$message->setSubject($subject);
$message->setFrom($sender);
$message->setTo($toEmail);
//this is my problem
$message->setBcc(array('tracking@pnrbuilder.com',$sender));
//as it is above only "sender" gets the email
//if I change it like this:
//$message->setBcc($tracker,$sender);
//only "tracker" gets the email
//same if I change it like this:
//$message->setBcc($sender);
//$message->addBcc($tracker);
$message->setReplyTo(array('flights@pnrbuilder.com'));
$message->setBody($content,'text/html');
$result = $mailer->send($message);
if ($result=3)
echo 'Email Sent!';
else
echo 'Error!';
?>
这样做的正确方法是什么?
【问题讨论】:
改用 AddBcc 有什么乐趣吗? 尝试一些 pnrbuilder.com 地址作为第二封电子邮件。可能是服务器配置的原因。 @allen213 nope addBcc() 给出了相同的结果(添加到我上面的问题中) @Ziumin 使用具有不同域的电子邮件地址确实有效,并且两者都被发送,当电子邮件是同一个域时,我能做些什么让它工作? 对于像我这样的其他人:仔细检查是否没有输入addBcc()
而不是 setBcc()
。 (您必须至少通过setBcc
设置第一个,然后才能使用addBcc
)。
【参考方案1】:
你可以找到swiftmailer教程here
示例:
$message->setBcc(array(array('some@address.tld' => 'The Name'),array('another@address.tld' => 'Another Name')));
尝试设置电子邮件地址的名称,看看是否有任何不同。
【讨论】:
谢谢。末尾有两个括号,必须有三个。【参考方案2】:这最终成为服务器端的问题,我联系了我的托管服务提供商 (GoDaddy),他们能够在解决问题的最后进行一些更改。感谢所有试图提供帮助的人!
【讨论】:
以上是关于使用 swiftmailer 密件抄送多个地址的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHPMailer 发送时事通讯(没有密件抄送的多个蒙面收件人)
PHPMailer 或 php 邮件功能 - 显示密件抄送地址