php邮件订阅功能,php – 使用Zend Framework向多个订阅者发送电子邮件

我想我必须在这里做错事,因为我的代码只向桌面上的最后一个订阅者发送了一封电子邮件.当我记录订阅者数组时,很明显它正在尝试发送多个订阅者.我认为这个问题与尝试将它们一起批处理有关……对我来说,最好的方法是什么?我正在尝试使用附件创建一条消息,然后逐个发送每个地址,并将它们作为一个批处理进程发送出去.这是我的代码:

$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并且只发送最后一个(因为在foreach之后调用$message-> send()).

基本上,每次foreach循环迭代时都会覆盖$message的值.将$message->发送到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();

标签:php,email,gmail,zend-framework,attachment

来源: https://codeday.me/bug/20190724/1520277.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值