首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从控制器返回数据后发送邮件的Laravel 4

从控制器返回数据后发送邮件的Laravel 4
EN

Stack Overflow用户
提问于 2016-05-22 09:05:46
回答 1查看 1.5K关注 0票数 1

我的控制器中有一个函数,它保存来自用户的消息,首先将消息保存到数据库中,而不是将电子邮件发送到该用户的邮件地址,然后将json响应返回给发送者。

问题:有时需要很长时间才能发送电子邮件,而发送者必须等待很长时间才能收到回复,有时甚至不发送电子邮件(因为一些smpt问题等等)。这会引发一个错误,但是我并不关心电子邮件是否发送,最重要的是将消息保存到数据库中。

我想要达到的目标是:

我想将消息保存到数据库,->

在此之后,立即向发送方发送响应,->

只在运行Mail::send()之后;

因此,在控制器将json返回给发件人之后,运行Mail::send(),发送方将收到一个积极的响应,而不管Mail::send()如何执行

代码语言:javascript
运行
复制
    $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']; 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-22 11:40:25

您可以使用Laravel的邮件排队功能。这是链接

  1. 邮件:队列(“电子邮件欢迎”,$data,函数($message) {}); 排队发送后台邮件。
  2. 邮件:稍后(5,‘电子邮件欢迎’,$data,函数($message){}); 定义发送邮件的秒数。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37372423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档