Overview Modern applications must communicate with users beyond the browser. Whether it is a password reset or a shipping confirmation, your app needs reliable ways to reach out. Laravel provides two distinct, powerful systems for this: the Mail component and the Notification component. While both can send emails, notifications are designed for multi-channel delivery, allowing you to hit Slack, SMS, and email simultaneously from a single class. Prerequisites To follow this guide, you should have a basic understanding of PHP and the Laravel framework. Familiarity with Composer for package management and the command line is essential for running migrations and generating classes. Key Libraries & Tools * **Mailables**: Dedicated classes for building emails. * **Markdown**: Used to create responsive, pre-designed email templates. * **Nexmo (Vonage)**: A popular SMS provider integrated via a community-maintained notification channel. * **Mailtrap**: A safe SMTP server for testing emails without sending them to real users. Code Walkthrough Generating a Mailable Start by creating a dedicated mail class using Artisan. This keeps your logic clean and separate from your controllers. ```bash php artisan make:mail OrderShipped ``` Inside the `build` method, you define the sender, subject, and the view. Using the `markdown` method ensures your email looks professional out of the box. ```python public function build() { return $this->from('[email protected]') ->subject('Your Order Shipped!') ->markdown('emails.orders.shipped'); } ``` Implementing Multi-Channel Notifications Notifications go a step further. You can define a `via` method to specify multiple channels like `mail` and `nexmo`. ```python public function via($notifiable) { return ['mail', 'nexmo']; } public function toNexmo($notifiable) { return (new NexmoMessage)->content('Your order is on the way!'); } ``` Syntax Notes Laravel uses **Fluent Interfaces**, allowing you to chain methods like `->subject()->attach()`. Additionally, implementing the `ShouldQueue` interface on your mail or notification classes is a best practice. It offloads the slow process of sending network requests to a background worker, keeping your app snappy for the end user. Practical Examples Use **Mailables** for content-heavy, single-channel communications like monthly newsletters. Use **Notifications** for event-driven alerts, such as notifying a team on Slack when a new subscription is purchased while simultaneously emailing the customer. Tips & Gotchas Always check your `.env` file first. If your `MAIL_MAILER` is set to `log` instead of `smtp`, your emails will only show up in your local log files. Also, remember that for SMS notifications, your User model must have a `routeNotificationForNexmo` method to tell the system which phone number to use.
Slack
Software
Sep 2021 • 1 videos
High activity month for Slack. Laravel among the most active voices, with 1 videos across 1 sources.
Sep 2021
- Sep 14, 2021