我的控制器中有一个函数,它保存来自用户的消息,首先将消息保存到数据库中,而不是将电子邮件发送到该用户的邮件地址,然后将json响应返回给发送者。
问题:有时需要很长时间才能发送电子邮件,而发送者必须等待很长时间才能收到回复,有时甚至不发送电子邮件(因为一些smpt问题等等)。这会引发一个错误,但是我并不关心电子邮件是否发送,最重要的是将消息保存到数据库中。
我想要达到的目标是:
我想将消息保存到数据库,->
在此之后,立即向发送方发送响应,->
只在运行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']; 发布于 2016-05-22 11:40:25
您可以使用Laravel的邮件排队功能。这是链接
https://stackoverflow.com/questions/37372423
复制相似问题