我们可以在Mailable类中使用MailMessage API吗?

时间:2017-01-24 14:28:35

标签: laravel email laravel-5 laravel-5.3

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

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

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

由于

1 个答案:

答案 0 :(得分:2)

没有。 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);
    }
});

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