2014-09-13 80 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,我想我永遠不會想出這個我自己的。