Sending an application’s users notifications via email, Slack, SMS, or another notification system is a common but surprisingly complex requirement. Laravel’s mail and notification features provide consistent APIs that abstract away the need to pay too close attention to any particular provider. Just like in Chapter 14, you’ll write your code once and choose at the configuration level which provider you’ll use to send your email or notifications.
Laravel’s mail functionality is a convenience layer on top of SwiftMailer, and out of the box Laravel comes with drivers for Mailgun, Mandrill, Sparkpost, SES, SMTP, PHP Mail, and Sendmail.
For all of the cloud services, you’ll set your authentication information in config/services.php. However, if you take a look you’ll see there are already keys there—and in config/mail.php—that allow you to customize your application’s mail functionality in .env using variables like
If you’re using any of the cloud-based API drivers, you’ll need to bring Guzzle in with Composer. You can run the following command to add it:
composer require guzzlehttp/guzzle:
If you use the SES driver, you’ll need to run the following command:
composer require aws/aws-sdk-php:~3.0
There are two different syntaxes in Laravel for sending mail: classic and mailable. The mailable syntax is the preferred syntax from 5.3 onward, so we’re ...