【发布时间】:2011-06-16 00:05:50
【问题描述】:
我在 Zend Framework 应用程序中使用 Zend_Mail 来发送包含基于 Web 的联系表单内容的电子邮件。
邮件本身可以正常工作(我使用的是 Google Apps 帐户),但处理过程可能需要相当长的时间(从几秒到近一分钟不等)。
我的控制器操作通常会在发送邮件后重定向访问者,所以我认为我可以在调用 $mail->send() 之前重定向访问者并让脚本在“后台”继续:
所以我尝试了以下方法:
$mailView = clone $this->view;
$mailView->assign('name', $form->getValue('name'));
$mailView->assign('email', $form->getValue('email'));
$mailView->assign('message', $form->getValue('message'));
$mailContent = $mailView->render('mailContact.phtml');
$mail = new Zend_Mail();
$mail->addTo('recipient@domain.com');
$mail->setSubject('Web Contact');
$mail->setBodyHtml($mailContent, 'UTF-8');
$this->_flashMessenger->addMessage('Thank you for your message!');
$this->_redirector->setExit(false)->gotoUrl('/about/contact');
$mail->send();
$this->_redirector 是 *Zend_Controller_Action_Helper_Redirector* 的一个实例
这似乎没有什么区别,在发送邮件时脚本仍然被阻止,然后重定向发生。
也许我应该写一个控制器插件,使用 postDispatch() 钩子可以让我在访客被重定向后发送邮件吗?
欢迎提出建议!
【问题讨论】:
标签: php zend-framework zend-mail