升级到 Laravel 5.3 - Mail::send 现在从 Mandrill 返回 null

Posted

技术标签:

【中文标题】升级到 Laravel 5.3 - Mail::send 现在从 Mandrill 返回 null【英文标题】:Upgrade to Laravel 5.3 - Mail::send now returns null from Mandrill 【发布时间】:2019-03-23 14:16:17 【问题描述】:

我正在从 Laravel 5.2 升级到 5.3,但由于这样做,Mail::send 函数在通过 Mandrill 发送时没有返回 null。

我在 Laravel 4.2 中遇到了同样的问题,但似乎在升级到版本 5 时添加了此功能。

$response = Mail::send($template, $email, function($message) use($subject)

    $message->to('test@example.com')->subject($subject);
);

dd($response)

消息发送正常,但响应为空,升级前在 5.1 和 5.2 中给出消息 ID/内容

我不明白他们为什么要添加该功能然后又将其删除?

【问题讨论】:

【参考方案1】:

这是因为语法发生了根本性的变化。您需要使用Mailable Class 而不是回调。

您的代码应如下所示:

Mail::to('test@example.com')->send(new EmailExample($data));

其中EmailExample 是一个扩展Mailable 并处理您的电子邮件正文和任何适用逻辑的类。

见docs here for further information

【讨论】:

不,它也一样。我观看了有关 5.3 中新的 Mailable 功能的 Laracasts 视频,Jeffery 将其解释为只是 Mail::send 的包装器。无论如何,我只是尝试过,即使使用 Mailable 它仍然返回 null

以上是关于升级到 Laravel 5.3 - Mail::send 现在从 Mandrill 返回 null的主要内容,如果未能解决你的问题,请参考以下文章

升级到 Laravel 5.3 - Mail::send 现在从 Mandrill 返回 null

Laravel 5.3 到 5.4 (mPdf - niklasravnsborg/laravel-pdf ) 升级问题

在升级laravel 5.2到5.3之后,无法在Route :: model中绑定模型

Laravel 5.3+ 中的 Route::controller() 替代方案

从 4.1 升级到 4.2 后 Laravel 控制器路由中断

从 Laravel 5.2 更新到 5.3 后,调用数组上的成员函数 all()