2014-09-13 52 views
0

我有一个Laravel 4应用程序,我需要发送某些电子邮件给用户。我不知道为什么,但我不断收到我的测试服务器上的这个错误(它不会对我的本地无业游民箱发生)Laravel 4排队邮件抛出错误,直接发送作品

参数1传递给照亮\邮件\梅勒:: getQueuedCallable()必须 是该类型的数组,空给出,堪称 blablabla /供应商/ laravel /框架/ src目录/照亮/邮件/ Mailer.php 上线238和定义

我尝试重置的一切:从git的数据库,干净的克隆。这些都没有奏效。我也绝望地清除了浏览器缓存和Cookie。我正在使用同步队列。所以它甚至不是一个真正的队列。

Mail :: send works just good。 Mail :: queue抛出上面的错误。

我从字面上开始拉我的头发,所以任何帮助将不胜感激。 这是我的代码:

这是我的BookingMailer类,它扩展了Mailer类。

// partner bir arabanın rezervasyonuna onay verdiğinde müşteriye gönderilecek ödeme linki 
public function sendPaymentLinkToCustomer($customer, $partner, $booking) { 
    $view = 'emails.bookings.request_confirmed'; 

    $data = [ 
     'user' => $customer->full_name // string, 
     'partner' => $partner->display_name // string, 
     'reference' => $booking->reference // integer, 
     'booking_id' => $booking->id // integer 
    ]; 

    return $this->sendTo($customer, 'Booking Request Confirmed', $view, $data, true, true); 
} 

这是我梅勒类,它实际排队的邮件。

public function sendTo($user, $subject, $view, $data = array(), $admin_copy=false, $send_as_pm=false) 
{ 
      Mail::queue($view, $data, function ($message) use ($user, $view, $data, $subject, $admin_copy) { 

       $message = $message->to($user->email)->replyTo(Config::get('mail.from.address'), Config::get('mail.from.name'))->subject($subject); 

       return $message; 
      }); 
} 

回答

0

这里是解决这个问题的(至少在我的情况)

我包括用户的姓和名的邮件。不过,我只是显示姓氏的第一个字母。而且我使用substr作为UTF-8字符串,这就是为什么它有时会返回有问题的字符进入数据数组,最终导致队列中断。

当我用mb_substr代替substr时,我的问题消失了。

Phew,我想我永远不会想出这个我自己的。