【问题标题】:Laravel 4 + Iron Mq: Queues fired but the mail is not sentLaravel 4 + Iron Mq:队列被解雇但邮件未发送
【发布时间】:2014-04-09 08:43:42
【问题描述】:

情况是这样的

我有一个安装了 Iron mq 的 Laravel 4 应用程序,以加快进程。 可以预订汽车并在网站上注册。在这两种情况下都会发送邮件。 问题是安装 Iron mq 后不再发送邮件。其余的都完成了,在数据库中插入数据,但是邮件没有发送。 在 Iron mq 仪表板中,队列被定期接收并显然被解雇..

这是路线

 /*  CARS  */

Route::get('focus', function()
 {
return View::make('iframe');
 });
Route::post('focus', 'RegistrationsController@booking');


Route::get('sharan', function()
{
return View::make('iframe2');
 });


Route::get('passat', function()
{
return View::make('iframe5');
});

// Route::post('passat', 'RegistrationsController@booking');

 Route::post('passat', function()
 {
return Queue::marshal();    
 });

/*  USER REGISTRATION */

Route::get('register', 'HomeController@getRegister');
Route::post('register', 'HomeController@postRegister');

现在预订汽车的过程更快,从 8/9 秒到 3 秒。这意味着 Iron 正在工作。虽然奇怪的是我只为其中一条发布路线制作了 Queue::marshall() ,但它适用于所有三个.. 用户注册也更快,没有任何 queue::marshall() 但关键是在这两种情况下都没有发送电子邮件。

这是邮件发送代码

 return \Mail::queue($this->view, $this->data, function($message) use($self)
{
   $message->to($self->email, $self->to)->subject($self->subject);

});

使用 Mail::send 它可以工作(但非常慢),使用 Mail::queue 更快但不会发送电子邮件。

主要问题是

为什么邮件没有发送? SMTP 设置应该不会改变吧?

Queue::marshall() 的正确位置是什么? 如果对于注册的 POST,我必须调用正确的方法 Route::post('register', 'HomeController@postRegister'); 然后,我必须把 Queue::marshall() 放在哪里? 可以做双路吗?调用方法并制作Queue::marshall?

非常感谢! 已经为以前的网站有同样的问题,从来没有解决。

【问题讨论】:

  • 您是否将您的 URL 输入到 iron.io 仪表板的推送队列中?
  • 是的,URL 被输入,队列被接收并且显然被解雇了。所有时间的消息总数为 10,队列大小为 1。这意味着队列已被触发。但是不明白为什么邮件没有发送..

标签: php email laravel laravel-4 queue


【解决方案1】:

这个 marshal 调用的目的只是让您的应用程序处理您的队列作业。所以,为你的元帅创建一个单独的路线,它只会被 Iron 使用:

Route::post('queues/marshal', function()
{
    return Queue::marshal();    
});

那么您只需在 Iron 队列中订阅您的 marshal url:

http://yoursite.com/queues/marshal

【讨论】:

  • 哦,太棒了...您应该获得诺贝尔和平奖!非常感谢!
猜你喜欢
  • 2014-08-04
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
  • 2018-02-06
  • 2022-08-13
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多