【问题标题】:Can we use MailMessage API in Mailable class?我们可以在 Mailable 类中使用 MailMessage API 吗?
【发布时间】:2017-06-09 09:38:00
【问题描述】:

在通知邮件中,我们可以使用一些API,使用greeting()、line()等方法快速写邮件。

https://laravel.com/docs/5.4/notifications#mail-notifications

我们可以在 Mailable 类中使用相同的 API 吗?

谢谢

【问题讨论】:

  • 这将是一个拉取请求。

标签: laravel email laravel-5 laravel-5.3


【解决方案1】:

没有。 Mailable 类没有实现与MailMessage 类相同的方法。

如果需要,您可以在通知之外使用 MailMessage 类,但您必须自己发送邮件对象。

$message = (new \Illuminate\Notifications\Messages\MailMessage())
    ->to(/* */)
    ->subject(/* */)
    ->line(/* */)
    ->action(/* */)
    ->line(/* */);

// most of this code is copied from \Illuminate\Notifications\Channels\MailChannel
Mail::send($message->view, $message->data(), function ($m) use ($message) {
    if (!empty($message->from)) {
        $m->from($message->from[0], isset($message->from[1]) ? $message->from[1] : null);
    }

    $m->to($message->to);

    if ($message->cc) {
        $m->cc($message->cc);
    }

    if (!empty($message->replyTo)) {
        $m->replyTo($message->replyTo[0], isset($message->replyTo[1]) ? $message->replyTo[1] : null);
    }

    $m->subject($message->subject ?: 'Default Subject');

    foreach ($message->attachments as $attachment) {
        $m->attach($attachment['file'], $attachment['options']);
    }

    foreach ($message->rawAttachments as $attachment) {
        $m->attachData($attachment['data'], $attachment['name'], $attachment['options']);
    }

    if (!is_null($message->priority)) {
        $m->setPriority($message->priority);
    }
});

注意:这是未经测试的,但我认为它应该可以工作。

【讨论】:

  • 有没有什么方法可以不使用mailable类直接发送邮件?
  • @ParthVora 更新了我的答案。
  • 我想这仅在您为消息设置视图时才有效。使用默认降价模板时,它无法按预期工作。它会抛出一个 InvalidArgumentException 并带有消息 Invalid view. for $message->view param.
  • @GustavoStraube 这在 5.3 中有效。 5.4 引入了对 markdown 视图的支持,因此视图逻辑发生了一些变化,你会得到那个错误。您可以查看5.4 MailChannel 以了解他们如何处理视图。
  • 谢谢,@patricus!实际上,我能够根据您的回答并查看当前版本的代码编写类似的解决方案。
猜你喜欢
  • 2018-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
  • 2016-08-29
  • 1970-01-01
  • 2019-05-27
相关资源
最近更新 更多