mirror of
https://github.com/projectsend/projectsend.git
synced 2026-10-04 05:25:51 +00:00
933eaa2ba4
Adds "Microsoft 365 (OAuth)" to the Email settings provider dropdown. Selecting it swaps the SMTP form for an app registration (client id, secret, optional tenant) and a "Connect mailbox" flow: the admin signs into the mailbox the installation should send as, and outgoing email goes through Graph sendMail as that mailbox — no password, no app password, no SMTP AUTH, which Microsoft is winding down. Delegated flow on purpose: it needs no admin consent and works for work/school and personal accounts alike. Its one weakness — a grant can die silently behind a password reset or a Conditional Access change — is answered by a daily scheduled refresh that keeps the token alive and, on a dead grant, warns the settings admins once in-app and on the settings page instead of letting mail stop quietly. Tokens and the client secret live encrypted in their own row and are read fresh at send time, never through the boot-config cache. The stored SMTP transport survives a provider switch untouched.
145 lines
4.5 KiB
PHP
145 lines
4.5 KiB
PHP
<?php
|
|
|
|
return [
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Default Mailer
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| This option controls the default mailer that is used to send all email
|
|
| messages unless another mailer is explicitly specified when sending
|
|
| the message. All additional mailers can be configured within the
|
|
| "mailers" array. Examples of each type of mailer are provided.
|
|
|
|
|
*/
|
|
|
|
'default' => env('MAIL_MAILER', 'log'),
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Mailer Configurations
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Here you may configure all of the mailers used by your application plus
|
|
| their respective settings. Several examples have been configured for
|
|
| you and you are free to add your own as your application requires.
|
|
|
|
|
| Laravel supports a variety of mail "transport" drivers that can be used
|
|
| when delivering an email. You may specify which one you're using for
|
|
| your mailers below. You may also add additional mailers if needed.
|
|
|
|
|
| Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2",
|
|
| "postmark", "resend", "log", "array",
|
|
| "failover", "roundrobin"
|
|
|
|
|
*/
|
|
|
|
'mailers' => [
|
|
|
|
'smtp' => [
|
|
'transport' => 'smtp',
|
|
'url' => env('MAIL_URL'),
|
|
'host' => env('MAIL_HOST', '127.0.0.1'),
|
|
'port' => env('MAIL_PORT', 2525),
|
|
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
|
|
'username' => env('MAIL_USERNAME'),
|
|
'password' => env('MAIL_PASSWORD'),
|
|
'timeout' => null,
|
|
'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url(env('APP_URL', 'http://localhost'), PHP_URL_HOST)),
|
|
],
|
|
|
|
'ses' => [
|
|
'transport' => 'ses',
|
|
],
|
|
|
|
'postmark' => [
|
|
'transport' => 'postmark',
|
|
// 'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'),
|
|
// 'client' => [
|
|
// 'timeout' => 5,
|
|
// ],
|
|
],
|
|
|
|
'resend' => [
|
|
'transport' => 'resend',
|
|
],
|
|
|
|
'sendmail' => [
|
|
'transport' => 'sendmail',
|
|
'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'),
|
|
],
|
|
|
|
// Custom transport (registered in PlatformServiceProvider); its
|
|
// credentials live in the mail_oauth_connections row, not here —
|
|
// selected as the default by MailConfigApplier when the admin has
|
|
// connected a Microsoft 365 mailbox.
|
|
'microsoft-graph' => [
|
|
'transport' => 'microsoft-graph',
|
|
],
|
|
|
|
'log' => [
|
|
'transport' => 'log',
|
|
'channel' => env('MAIL_LOG_CHANNEL'),
|
|
],
|
|
|
|
'array' => [
|
|
'transport' => 'array',
|
|
],
|
|
|
|
'failover' => [
|
|
'transport' => 'failover',
|
|
'mailers' => [
|
|
'smtp',
|
|
'log',
|
|
],
|
|
],
|
|
|
|
'roundrobin' => [
|
|
'transport' => 'roundrobin',
|
|
'mailers' => [
|
|
'ses',
|
|
'postmark',
|
|
],
|
|
],
|
|
|
|
],
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Global "From" Address
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| You may wish for all emails sent by your application to be sent from
|
|
| the same address. Here you may specify a name and address that is
|
|
| used globally for all emails that are sent by your application.
|
|
|
|
|
*/
|
|
|
|
'from' => [
|
|
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
|
|
'name' => env('MAIL_FROM_NAME', 'Example'),
|
|
],
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Markdown Mail Rendering
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| The "theme" here is only the initial default (used for mail sent
|
|
| outside a notification, or before Setting::EmailTheme is read) —
|
|
| ThemedMailChannel picks the installation's actual theme at send time.
|
|
| The "paths" entry is what makes resources/views/vendor/mail override
|
|
| the framework's own header/footer/theme-css views.
|
|
|
|
|
*/
|
|
|
|
'markdown' => [
|
|
'theme' => 'default',
|
|
'paths' => [
|
|
resource_path('views/vendor/mail'),
|
|
],
|
|
],
|
|
|
|
];
|