Laravel 4 Queued Mailing在直接发送作品时抛出错误

时间:2014-09-13 16:37:35

标签: php email laravel queue

我有一个Laravel 4应用程序,我需要向用户发送某些电子邮件。我不知道为什么,但我一直在我的测试服务器上收到此错误(它不会发生在我当地的流浪盒上)

  

传递给Illuminate \ Mail \ Mailer :: getQueuedCallable()的参数1必须   是类型数组,null给定,调用   blablabla /供应商/ laravel /框架/ src目录/照亮/邮件/ Mailer.php   在第238行并定义

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

邮件::发送工作正常。 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);
}

这是我的 Mailer 类,实际上是将邮件排队。

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;
            });
}

1 个答案:

答案 0 :(得分:0)

以下是此问题的解决方案(至少在我的情况下)

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

当我使用mb_substr而不是substr时,我的问题就消失了。

P,我以为我永远不会自己想出这个。