Уведомление Laravel 5.3 против рассылки

Я немного не понимаю, использовать ли Laravel Уведомление или Mailable класс. Насколько я понимаю, Mailables используются только для отправки электронных писем, тогда как уведомления могут использоваться для отправки электронных писем и sms. В моем приложении у меня пока нет планов отправлять sms-уведомления, поэтому я не понимаю, стоит ли мне просто использовать класс Mailable в этом случае. Мои вопросы:

  1. Если я собираюсь отправлять только уведомления по электронной почте, лучше ли мне использовать Mailables вместо уведомлений?

  2. Если каждое электронное письмо имеет разный HTML-макет, то будет ли Mailable лучшим вариантом?

  3. Даже если все электронные письма по своей природе являются уведомлениями, имеет ли смысл отправлять их с использованием Mailables вместо уведомлений?

Может ли кто-нибудь сказать мне основное различие между этими двумя и то, как мы должны решить, какой метод выбрать при отправке писем в Laravel 5.3.


person Neel    schedule 18.11.2016    source источник


Ответы (2)


Да, безусловно, если макет каждого электронного письма отличается, вы должны использовать Mailable

Mailable - это новый способ отправки электронных писем, который стал проще, чем раньше. Более настраиваемый, чем уведомления.

Уведомление очень удобно, если вы хотите отправить предопределенный макет по разным каналам (почта, SMS, Slack и т. Д.)

Вы можете настроить макет уведомлений, но иметь 1 макет по уведомлению будет сложнее ... это просто не вариант использования уведомлений

person Juliatzin    schedule 18.11.2016
comment
Также хочу отметить, что уведомления могут автоматически сохраняться в базе данных. Если вы хотите вести журнал электронных писем и не хотите писать дополнительную логику, вам могут пригодиться уведомления. Но сохранить электронную почту в базе данных не так уж и сложно. - person Scott Plunkett; 18.11.2016
comment
Спасибо @Juliatzin Это проясняет мою дилемму. Я приму ваш ответ через 5 минут, как только это позволит мне. - person Neel; 18.11.2016
comment
Это правда, и вы можете создать свой собственный драйвер для создания собственных уведомлений, так что это довольно мощный инструмент. Просто зависит от вашего варианта использования - person Juliatzin; 18.11.2016
comment
@Juliatzin Уже поздно, но не могли бы вы объяснить последнее утверждение в своем ответе? - person Asish; 16.11.2020

Хотя этого нет в документации, начиная с Laravel 5.3.7, канал уведомлений mail может работать с Mailable объектами в дополнение к объектам MailMessage уведомлений.

Следовательно, вы можете создавать все свои электронные письма как Mailable объекты, и если вы решите отправлять их с помощью уведомлений, вам просто нужно, чтобы ваш toMail() метод возвращал Mailable объекты, которые вы уже создали.

person patricus    schedule 18.11.2016
comment
это великолепно. Это также приведет к переходу с Mailable на Notification в будущем, если потребуется, вместо перезаписи этого класса. - person Neel; 19.11.2016
comment
здесь нужно иметь в виду, что вам также придется явно передать to адрес, поскольку он не будет автоматически извлекать его из уведомляемого, как это происходит с MailMessage - person Jeff Puckett; 12.06.2018