我的控制器中有一个函数可以保存来自用户的消息,首先它将消息保存到数据库中,而不是将电子邮件发送到该用户的邮件地址,而不是将json响应发送给发件人。
问题:有时发送电子邮件需要很长时间,发件人必须等待很长时间才能收到回复,有时甚至不会发送电子邮件(由于某些问题等等)并且它会触发错误,但是如果发送或不发送电子邮件,我真的不在乎,最重要的是将消息保存到数据库中。
我想要实现的目标:
我想将消息保存到数据库,>
之后立即向发件人发送回复, - >
并且仅在运行Mail :: send();
之后所以在控制器将json返回给发件人之后运行Mail :: send(),因此无论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'];
答案 0 :(得分:1)
您可以使用Laravel的邮件排队功能。这是Link