gpt4 book ai didi

php - 使用 Zend Framework 向多个订阅者发送电子邮件

转载 作者:可可西里 更新时间:2023-11-01 00:12:07 26 4
gpt4 key购买 nike

我想我一定是在这里做错了什么,因为我的代码只向表中的最后一个订阅者发送了一封电子邮件。当我记录订阅者数组时,很明显它试图发送给多个订阅者。我认为问题与尝试将它们一起批处理有关......对我来说最好的方法是什么?我正在尝试创建一 strip 有附件的消息,然后分别发送每个地址,然后将它们作为一个批处理过程全部发送出去。这是我的代码:

    $subscribersManager = new DD_Subscribers_Manager();
$subscribers = $subscribersManager->getAllSubscribers();


$subject = $form->getElement('subject')->getValue();
$body = $form->getElement('body')->getValue();
$filename = $form->getElement('bulletin')->getValue();
$filepath = Zend_Registry::get('rootDir') . '/public/downloads/archive/' . $filename;

$config = array('ssl' => 'tls', 'port' => 587, 'auth' => 'login', 'username' => 'fake@email.com', 'password' => 'password');
$smtpConnection = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);

foreach ($subscribers as $subscriber) {
$message = new Zend_Mail('utf-8');
$message->setFrom('fake@email.com', 'My Fake Mailing List')
->addTo($subscriber->email)
->setSubject($subject)
->setBodyText($body);
$attachment = $message->createAttachment(file_get_contents($filepath));
$attachment->type = 'application/pdf';
$attachment->filename = $filename;
}
$message->send($smtpConnection);

最佳答案

这看起来像是一个作用域问题:您在 foreach 循环中创建 $message 并且只发送最后一个(因为 $message->send() 在 foreach 之后调用。

基本上,每次 foreach 循环迭代时,您都会覆盖 $message 的值。将 $message->send 移动到 foreach 循环中以每次迭代发送一封电子邮件。可能还有另一种创建消息数组并一次发送所有消息的方法,但我对 ZendMail 不熟悉。

编辑:实际上,如果您阅读 Zend_Mail 上的文档,您可以调用 $message->addTo() 来将其他收件人(超过 1 个)添加到单个消息中。您的代码可能会更改为:

$message = new Zend_Mail();
$message->setFrom('fake@email.com', 'My Fake Mailing List')
->setSubject($subject)
->setBodyText($body);

foreach($subscribers as $subscriber){

$message->addTo($subscriber->email);
}
$message->send();

Zend_Mail - adding recipients

关于php - 使用 Zend Framework 向多个订阅者发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/778331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com