paubikas / laravel-msgraph-mailer
Laravel 9/10 mail driver to send emails using Microsoft Graph, supporting both personal accounts as well as work/school accounts (365/Exchange)
Installs: 1 315
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 2
Open Issues: 1
Requires
- php: >=8.1
- ext-json: *
- guzzlehttp/guzzle: ^7.0
- illuminate/support: ^9.0 | ^10.0
- laravel/framework: ^9.0 | ^10.0
- symfony/http-client: ^6.0
- symfony/mailer: ^5.4|^6.0
Requires (Dev)
- mockery/mockery: ^1.3
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^9.1 | ^10.0
README
This package makes it easy to send emails from your personal, work or school account using Microsoft's Graph API, allowing you to benefit from HTTP instead of SMTP with Laravel.
Inspired by wapacro/laravel-msgraph-mail and fixed to work with Laravel 9
Installation
Install the package using composer:
composer require paubikas/laravel-msgraph-mailer
Add the configuration to your mail.php config file:
'mailers' => [ 'microsoft-graph' => [ 'transport' => 'microsoft-graph', 'tenant' => env('MAIL_MSGRAPH_TENANT', 'common'), 'client' => env('MAIL_MSGRAPH_CLIENT'), 'secret' => env('MAIL_MSGRAPH_SECRET') 'saveToSentItems' => env('MAIL_MSGRAPH_SAVE_TO_SENT_ITEMS', false) ] // ... ]
Add the configuration to your ENV file:
MAIL_MAILER=microsoft-graph MAIL_MSGRAPH_TENANT= MAIL_MSGRAPH_CLIENT= MAIL_MSGRAPH_SECRET= MAIL_MSGRAPH_SAVE_TO_SENT_ITEMS=false
Valid values for tenant
are your tenant identifier (work & school accounts) or common
for personal accounts.
Note: This package relies on Laravel's Cache interface for caching access tokens. Make sure to configure it properly, too!
Getting the credentials
To get the necessary client ID and secret you'll need to register your application and grant it the required permissions. Head over to the Azure Portal to do so (you don't need to be an Azure user).
Make sure to grant the Mail.Send permission and to generate a secret afterwards (may be hidden during app registration).
Work & School accounts: Granting your app the Mail.Send permission allows you by default to send emails with every valid email address within your company/school. Use an Exchange Online Application Access Policy to restrict which email addresses are valid senders for your application.