我的控制器中有一個保存用戶消息的函數,首先它將消息保存到數據庫中,而不是將消息發送到該用戶的郵件地址,而不是將json響應返回給發件人。Laravel 4在從控制器返回數據後發送郵件
問題:有時它的時間太長要發送郵件,並且發件人必須等待很長一段時間的反應,或有時電子郵件甚至沒有派(由於一些SMPT問題等),它觸發一個錯誤,但是如果發送電子郵件或者不發送郵件,那麼最重要的是這條消息被保存到數據庫。
我想要實現:
我想消息保存到數據庫中, - >
後立即發送響應給發件人 - >
,只有運行後郵件發送::();
這樣運行的Mail :: send()方法控制器返回JSON給發件人後,讓發件人會收到積極響應,無論怎樣的Mail :: send()方法執行
$message = new MessageDB;
$message->listing_id = e(Input::get('listing_id'));
$message->user_id = $listing->User->id;
$message->name = e(Input::get('name'));
$message->mobile = e(Input::get('mobile'));
$message->message = e(Input::get('message'));
if ($message->save()) {
Mail::send('emails.message', ['user' => 'Jon Doe','message' => $message], function($m) use($listing){
$listing_agent = $listing->Agent;
if ($listing->agent == null) {
$mail_to = $listing->User->email;
$name = '';
}else{
$mail_to = $listing->Agent->email;
$name = $listing->Agent->first_name.' '.$listing->Agent->second_name;
}
$m->to($mail_to)->subject('new message from company.com');
});
return ['success' => 1, 'message' => 'messasge has been sent'];
確切的問題是什麼? –
我想在返回響應之後執行Mail :: send(),或者做一些事情讓Mail :: send()不會影響響應和響應時間。 – Mikail
使用'Mail :: queue()'代替Mail :: send()'。簡單! – prateekkathal