我创建了下一堂课:
//src/AppBundle/Services/RegisterMail.php
namespace AppBundle\Services;
class RegisterMail{
protected $mailer;
public function __construct($mailer)
{
$this->mailer = $mailer;
}
public function sendPassword(){
$message = \Swift_Message::newInstance()
->setSubject('Otro correo')
->setFrom('fromEmail@fromEmail.com')
->setTo('toEmail@toEmail.com')
->setBody('hola desde el servicio')
;
$envia = $this->mailer->send($message);
}
}
我在service.yml中声明它是一项服务
services:
registermail:
class: AppBundle\Services\RegisterMail
arguments: [@mailer]
在我的控制器中调用服务:
//src/AppBundle/Controller/DefaultController
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class DefaultController extends Controller
{
/**
* @Route("/")
*/
public function indexAction()
{
//Envío el email con el password
$mailer = $this->get('registermail');
$mailer->sendPassword();
return $this->render(':Default:index.html.twig');
}
}
电子邮件已发送,但页面仍然加载30秒,我从开发人员工具栏发出警告:“加载Web调试工具栏时出错(404:未找到) . 是否要打开探查器?如果接受消息symfony profiler不显示任何错误 . 如果取消消息,则不显示开发人员工具栏 .
我究竟做错了什么?
谢谢!
3 回答
@ RL83你可能是在swiftmailer中没有使用任何类型的假脱机同步发送消息而你的smtp提供程序运行缓慢 .
您应该尝试使用异步假脱机队列,我建议使用https://github.com/radutopala/TSSAutomailerBundle,它为您提供数据库队列 . 所以基本上,你不仅会有一个假脱机队列,还会有一个存储在数据库层中的已发送电子邮件的历史记录 .
尝试用以下代码替换您的代码:
注册您的服务并添加新的依赖项 - 传输服务
"@swiftmailer.transport.real"
而你的麻烦将得到解决
感谢您的回答,抱歉延误 .
@lyberteam,当我把你的代码,我收到此错误消息:注意:未定义的变量:邮件程序500内部服务器错误 - ContextErrorException
这里:$ email = $ mailer-> createMessage()
有什么建议吗?
谢谢