Laravel 5.3通知与可邮寄对象的比较

53
我有点困惑,不知道是否应该使用 Laravel 的 NotificationMailable 类。据我所知,Mailable 仅用于发送电子邮件,而通知可用于发送电子邮件和短信。在我的应用程序中,我目前没有计划发送短信通知,因此我不确定在这种情况下是否应该只使用 Mailable 类。我的问题是:
  1. 如果我只打算发送电子邮件通知,那么使用 Mailable 而不是 Notifications 是否更好?
  2. 如果每封电子邮件都有不同的 HTML 布局,那么 Mailable 是否是更好的选择?
  3. 即使所有电子邮件本质上都是通知电子邮件,使用 Mailable 而不是 Notifications 发送它们是否仍然有意义?
有人能告诉我这两者的主要区别以及在 Laravel 5.3 中发送电子邮件时如何决定选择哪种方法吗?
2个回答

62
尽管在文档中没有提到,但自 Laravel 5.3.7 起,通知的 "mail" 渠道可以与通知 "MailMessage" 对象外,还可以使用 "Mailable" 对象。因此,您可以将所有电子邮件创建为 "Mailable" 对象,如果您决定通过通知发送它们,只需使您的 "toMail()" 方法返回您已经创建的 "Mailable" 对象即可。请注意保留原有的 HTML 标签。

1
这很棒。如果将来需要从Mailable更改为Notification,这也将使转换变得更加容易,而不需要重写那些类。 - Neel
14
要记住的一件事是,您还必须显式传递to地址,因为它不会像MailMessage那样自动从通知中提取。 - Jeff Puckett

22

如果每个电子邮件的布局不同,那么您应该使用Mailable。Mailable是发送电子邮件的新方法,比以前更容易。比Notifications更可定制。

如果您想在不同的渠道(邮件、短信、Slack等)中发送预定义的布局,则通知非常好用。

您可以自定义通知布局,但是为每个通知设置1个布局会变得更加困难...这不是通知的使用情况。


9
我还想提一下,通知可以自动存储在数据库中。如果您想保留电子邮件日志但不想编写额外的逻辑,那么通知将非常有用。但是,将电子邮件存储在数据库中并不难。 - Scott P
谢谢@Juliatzin。这解释了我的困惑。一旦允许,我将在5分钟内接受您的答案。 - Neel
1
这是真的,你可以创建自己的驱动程序来制作自己的通知,因此它非常强大。只取决于你的使用情况。 - Juliatzin
@Juliatzin,现在已经很晚了,但是你能解释一下你回答中的最后一个语句吗? - Asish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接