我创建了下一堂课:
//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不会显示任何错误。 如果取消消息开发人员工具栏,则不会显示。
我做错了什么?
谢谢!
答案 0 :(得分:0)
@ RL83你可能是在swiftmailer中没有使用任何类型的假脱机同步发送消息而你的smtp提供程序运行缓慢。
您应该尝试使用异步假脱机队列,我建议使用https://github.com/radutopala/TSSAutomailerBundle,它为您提供数据库队列。所以基本上,你不仅要有一个假脱机队列,还要有一个存储在数据库层中的已发送电子邮件的历史记录。
答案 1 :(得分:0)
尝试用以下代码替换您的代码:
//src/AppBundle/Services/RegisterMail.php
namespace AppBundle\Services;
class RegisterMail{
protected $mailer;
protected $transport; // <- Add transport to your service
public function __construct($mailer, $transport)
{
$this->mailer = $mailer;
$this->transport = $transport;
}
public function sendPassword() // <- change the method like this
{
$email = $mailer->createMessage()
->setSubject('Otro correo')
->setFrom('fromEmail@fromEmail.com')
->setTo('toEmail@toEmail.com')
->setCharset("UTF-8")
->setContentType('text/html')
->setBody('hola desde el servicio')
;
$send = $mailer->send($email);
$spool->flushQueue($transport);
}
}
注册您的服务并添加新的依赖项 - 传输服务"@swiftmailer.transport.real"
services:
registermail:
class: AppBundle\Services\RegisterMail
arguments: ["@mailer", "@swiftmailer.transport.real" ]
你的麻烦将得到解决
答案 2 :(得分:0)
感谢您的回答,抱歉延误。
@lyberteam,当我把你的代码,我收到此错误消息: 注意:未定义的变量:邮件程序 500内部服务器错误 - ContextErrorException
此处:$ email = $ mailer-&gt; createMessage()
有什么建议吗?
谢谢