我在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('[email protected]');
$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 *
这似乎并不有所作为,脚本仍然受阻,而邮件是一个实例SE nt之后,发生重定向。
也许我应该写一个控制器插件,使用postDispatch()钩子允许我在访问者重定向后发送邮件?
欢迎提出建议!
上安装并行线程PECL扩展,如果90%的用户允许的Ajax/JavaScript,然后90的电子邮件%将被发送。这不是该任务的最佳机制。 – 2011-01-26 20:36:30