From b1ff9f0305d344d93e7f2ede0d57c7d435c951b5 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 24 Jun 2022 23:49:22 +1000 Subject: [PATCH] Mailers for Laravel --- app/Helpers/Mail/GmailTransport.php | 101 +++--- app/Helpers/Mail/GmailTransportManager.php | 31 -- .../Mail/Office365TransportManager.php | 23 -- app/Jobs/Entity/EmailEntity.php | 5 + app/Providers/AppServiceProvider.php | 12 + app/Providers/MailServiceProvider.php | 61 ---- composer.json | 1 + composer.lock | 323 +++++++++++++++--- config/app.php | 2 +- config/mail.php | 5 - 10 files changed, 353 insertions(+), 211 deletions(-) delete mode 100644 app/Helpers/Mail/GmailTransportManager.php delete mode 100644 app/Helpers/Mail/Office365TransportManager.php delete mode 100644 app/Providers/MailServiceProvider.php diff --git a/app/Helpers/Mail/GmailTransport.php b/app/Helpers/Mail/GmailTransport.php index d77688f5bd39..1a20c806cd09 100644 --- a/app/Helpers/Mail/GmailTransport.php +++ b/app/Helpers/Mail/GmailTransport.php @@ -11,23 +11,26 @@ namespace App\Helpers\Mail; +use App\Models\User; use App\Utils\TempFile; use Dacastro4\LaravelGmail\Facade\LaravelGmail; use Dacastro4\LaravelGmail\Services\Message\Mail; -use Illuminate\Mail\Transport\Transport; -use Swift_Mime_SimpleMessage; - +use Symfony\Component\Mailer\SentMessage; +use Symfony\Component\Mailer\Transport\AbstractTransport; +use Symfony\Component\Mime\MessageConverter; /** * GmailTransport. */ -class GmailTransport extends Transport +class GmailTransport extends AbstractTransport { /** * The Gmail instance. * * @var Mail */ - protected $gmail; + public $gmail; + + public $body; /** * Create a new Gmail transport instance. @@ -35,59 +38,75 @@ class GmailTransport extends Transport * @param Mail $gmail * @param string $token */ - public function __construct(Mail $gmail) + public function __construct() { - $this->gmail = $gmail; + parent::__construct(); + $this->gmail = new Mail; + $this->body = new \Google\Service\Gmail\Message(); + } - public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null) + protected function doSend(SentMessage $message): void { - /* For some reason the Injected Mail class carries cached tokens, so we need to reinit the Mail class*/ - $this->gmail = null; - $this->gmail = new Mail; + nlog("in Do Send"); + $message = MessageConverter::toEmail($message->getOriginalMessage()); - /*We should nest the token in the message and then discard it as needed*/ - $token = $message->getHeaders()->get('GmailToken')->getValue(); + // $token = $message->getHeaders()->get('GmailToken')->getValue(); + // $message->getHeaders()->remove('GmailToken'); - $message->getHeaders()->remove('GmailToken'); +nlog($message->getHeaders()->get('Tag')->getValue()); - $this->beforeSendPerformed($message); + $token = '{"access_token":"ya29.a0ARrdaM_XgDGugpxwbHBCDQJgfOvuDfX_6d_PwC-g7e3TUMmym7aquhkVkLvpp92V3bq9LIP-mur289nITVkadeea5UhI667f8KMi836cdZFdYfYwm9yFTshUNozvegkNRtXIrD2LzzAZrIXH7kr1NilP5zyV6w","expires_in":3598,"scope":"openid https:\/\/www.googleapis.com\/auth\/userinfo.profile https:\/\/www.googleapis.com\/auth\/gmail.send https:\/\/www.googleapis.com\/auth\/userinfo.email","token_type":"Bearer","id_token":"eyJhbGciOiJSUzI1NiIsImtpZCI6IjJiMDllNzQ0ZDU4Yzk5NTVkNGYyNDBiNmE5MmY3YjM3ZmVhZDJmZjgiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiIzMjA4NDc1MzU1ODQtNHZvcHZ0OHY5MDY0aHM3a2plM2h0b25yMHZscHVvcm4uYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJhdWQiOiIzMjA4NDc1MzU1ODQtNHZvcHZ0OHY5MDY0aHM3a2plM2h0b25yMHZscHVvcm4uYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJzdWIiOiIxMDgyMDM3MTY1NjYwMjI5MjQ1OTMiLCJlbWFpbCI6InR1cmJvMTI0QGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdF9oYXNoIjoiRjdzT1lvRUw0SU1qN1lGbUtvY0YydyIsIm5hbWUiOiJEYXZpZCBCb21iYSIsInBpY3R1cmUiOiJodHRwczovL2xoMy5nb29nbGV1c2VyY29udGVudC5jb20vYS0vQU9oMTRHaDMxSVFfYXBNME9GLWRKSzEwMnF1OFpIc1YtMHpyV2U2MTdzbEpiTW89czk2LWMiLCJnaXZlbl9uYW1lIjoiRGF2aWQiLCJmYW1pbHlfbmFtZSI6IkJvbWJhIiwibG9jYWxlIjoiZW4tR0IiLCJpYXQiOjE2NTYwNjI4NzUsImV4cCI6MTY1NjA2NjQ3NX0.ZeRLJ9jQA8bhVmyaGOrrk-stxsM4VU8fACmwWL6PNXAoFMbswRvrqj0LUnFk2aaswkHOXAG-BowKRfd2RoZ9SE_JlqFNBzaV09XrhtsdSkos7YrOIme2vu2qLT7fsYpkiwwcc9Dvv_TXJx0WX9sm-XrhPc86AWBJ9n2qpTed2hE_RZW4UnbjgxM2l7mnNXWFWK0uod4GAHHewhvQuz13Qk1Mf5ySxCdnNawzM5uKHso5RC3TH-q4aDIsIA4afTIxQx3qbHbvqzEYgWLukWSKXpU1F7Afwbok83Kh7_SXQVNAkOnmlnuEseG2YzpdtkTColuMTndPxD0Gt5A4WRuq7A","created":1656062875,"refresh_token":"1\/\/0dIt2gfW1if-aCgYIARAAGA0SNwF-L9Ir9GOXDuIyv6dIR-gw9ciugTefnUinn09-wjIhU4V0mC5G6x8mA0qzyV1fWhE6PbZI99Q"}'; + // $this->beforeSendPerformed($message); + $this->gmail->using($token); - $this->gmail->to($message->getTo()); - $this->gmail->from($message->getFrom()); - $this->gmail->subject($message->getSubject()); - $this->gmail->message($message->getBody()); + $this->gmail->to( collect($message->getTo())->map(function ($email) { + return ['email' => $email->getAddress(), 'type' => 'to']; + })); + $this->gmail->from( collect($message->getFrom())->map(function ($email) { + return ['email' => $email->getAddress(), 'type' => 'from']; + })); + + $this->gmail->subject($message->getSubject()); + $this->gmail->message($message->getHtmlBody()); $this->gmail->cc($message->getCc()); - if (is_array($message->getBcc())) { + + + + if(is_array($message->getBcc())) $this->gmail->bcc(array_keys($message->getBcc())); - } - foreach ($message->getChildren() as $child) { - if ($child->getContentType() != 'text/plain') { - $this->gmail->attach(TempFile::filePath($child->getBody(), $child->getHeaders()->get('Content-Type')->getParameter('name'))); - } - } +nlog("c"); +nlog($message->getAttachments()); +nlog("c1"); +// nlog($message->getAttachments()); - /** - * Google is very strict with their - * sending limits, if we hit 429s, sleep and - * retry again later. - */ - try { - $this->gmail->send(); - } catch (\Google\Service\Exception $e) { - nlog('gmail exception'); - nlog($e->getErrors()); +// foreach ($message->getAttachments() as $child) +// { - sleep(5); - $this->gmail->send(); - } +// nlog($child); - $this->sendPerformed($message); +// if($child->getContentType() != 'text/plain') +// { - return $this->numberOfRecipients($message); +// $this->gmail->attach(TempFile::filePath($child->getBody(), $child->getHeaders()->get('Content-Type')->getParameter('name') )); + +// } + +// } + +nlog("d"); + $this->gmail->send(); + // $this->gmail->service->users_messages->send('me', $this->body,[]); + } + + public function __toString(): string + { + return 'gmail'; + } + } diff --git a/app/Helpers/Mail/GmailTransportManager.php b/app/Helpers/Mail/GmailTransportManager.php deleted file mode 100644 index 2633f4dd641c..000000000000 --- a/app/Helpers/Mail/GmailTransportManager.php +++ /dev/null @@ -1,31 +0,0 @@ -invitation, $this->reminder_template, $this->template_data))->build(); } + + public function failed($e) + { + nlog($e->getMessage()); + } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 831f45ee9cbd..49d97f9087c8 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -11,6 +11,8 @@ namespace App\Providers; +use App\Helpers\Mail\GmailTransport; +use App\Helpers\Mail\Office365MailTransport; use App\Http\Middleware\SetDomainNameDb; use App\Models\Invoice; use App\Models\Proposal; @@ -22,6 +24,7 @@ use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Queue\Events\JobProcessing; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Blade; +use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Queue; use Illuminate\Support\Facades\RateLimiter; use Illuminate\Support\Facades\Schema; @@ -72,6 +75,15 @@ class AppServiceProvider extends ServiceProvider // Model::preventLazyLoading( // !$this->app->isProduction() // ); + + Mail::extend('gmail', function () { + return new GmailTransport(); + }); + + Mail::extend('office365', function () { + return new Office365MailTransport(); + }); + } /** diff --git a/app/Providers/MailServiceProvider.php b/app/Providers/MailServiceProvider.php deleted file mode 100644 index c3ad6921089b..000000000000 --- a/app/Providers/MailServiceProvider.php +++ /dev/null @@ -1,61 +0,0 @@ -getSymfonyTransport()->registerPlugin($this->app->make(CssInlinerPlugin::class)); - } - - /** - * Register the service provider. - * - * @return void - */ - public function register() - { - $this->registerIlluminateMailer(); - $this->registerMarkdownRenderer(); - } - - public function registerGmailApiMailer() - { - - // $factory = new GmailApiTransportFactory(); - - // if (! isset($config['secret'])) { - // $config = $this->app['config']->get('services.mailgun', []); - // } - - // return $factory->create(new Dsn( - // 'gmail+api'), - // $config['endpoint'] ?? 'default', - // $config['secret'], - // $config['domain'] - // )); - - } - - public function registerMicrosoftMailer() - { - - } -} diff --git a/composer.json b/composer.json index 6808d8ae84bc..ae3609192405 100644 --- a/composer.json +++ b/composer.json @@ -44,6 +44,7 @@ "braintree/braintree_php": "^6.0", "checkout/checkout-sdk-php": "^2.5", "cleverit/ubl_invoice": "^1.3", + "dacastro4/laravel-gmail": "^6.0", "doctrine/dbal": "^3.0", "eway/eway-rapid-php": "^1.3", "fakerphp/faker": "^1.14", diff --git a/composer.lock b/composer.lock index 166cdf3e696d..ba9721ad9af4 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9c21b79c57e5ddfdd7c98a7b69773bd3", + "content-hash": "b54c91d78cce101cdca1701b3b46c762", "packages": [ { "name": "afosto/yaac", @@ -951,6 +951,76 @@ ], "time": "2022-05-24T11:56:16+00:00" }, + { + "name": "dacastro4/laravel-gmail", + "version": "v6.0", + "source": { + "type": "git", + "url": "https://github.com/dacastro4/laravel-gmail.git", + "reference": "6d6a447fb0404def74d5e7f275d37446aaa70345" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dacastro4/laravel-gmail/zipball/6d6a447fb0404def74d5e7f275d37446aaa70345", + "reference": "6d6a447fb0404def74d5e7f275d37446aaa70345", + "shasum": "" + }, + "require": { + "google/apiclient": "^2.5", + "illuminate/auth": "~5.8|^6.0|^7.0|^8.0|^9.0", + "illuminate/config": "~5.8|^6.0|^7.0|^8.0|^9.0", + "illuminate/database": "~5.8|^6.0|^7.0|^8.0|^9.0", + "illuminate/routing": "~5.8|^6.0|^7.0|^8.0|^9.0", + "illuminate/session": "~5.8|^6.0|^7.0|^8.0|^9.0", + "illuminate/support": "~5.8|^6.0|^7.0|^8.0|^9.0", + "php": "^7.4|^8.0", + "swiftmailer/swiftmailer": "~5.8|^6.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.0|^5.0|^6.0", + "phpunit/phpunit": "^9.3", + "squizlabs/php_codesniffer": "~3.4" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Dacastro4\\LaravelGmail\\LaravelGmailServiceProvider" + ], + "aliases": { + "LaravelGmail": "Dacastro4\\LaravelGmail\\Facade\\LaravelGmail" + } + } + }, + "autoload": { + "psr-4": { + "Dacastro4\\LaravelGmail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Castro", + "email": "danielcastro04@gmail.com", + "homepage": "https://danielcastro.dev" + } + ], + "description": "Gmail API package for Laravel", + "keywords": [ + "api", + "gmail", + "laravel" + ], + "support": { + "issues": "https://github.com/dacastro4/laravel-gmail/issues", + "source": "https://github.com/dacastro4/laravel-gmail/tree/v6.0" + }, + "time": "2022-03-07T14:05:36+00:00" + }, { "name": "dasprid/enum", "version": "1.0.3", @@ -4827,43 +4897,41 @@ }, { "name": "moneyphp/money", - "version": "v4.0.4", + "version": "v3.3.1", "source": { "type": "git", "url": "https://github.com/moneyphp/money.git", - "reference": "efe904ab6109d87046eb624d5dff7d270fd0cca5" + "reference": "122664c2621a95180a13c1ac81fea1d2ef20781e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/moneyphp/money/zipball/efe904ab6109d87046eb624d5dff7d270fd0cca5", - "reference": "efe904ab6109d87046eb624d5dff7d270fd0cca5", + "url": "https://api.github.com/repos/moneyphp/money/zipball/122664c2621a95180a13c1ac81fea1d2ef20781e", + "reference": "122664c2621a95180a13c1ac81fea1d2ef20781e", "shasum": "" }, "require": { - "ext-bcmath": "*", - "ext-filter": "*", "ext-json": "*", - "php": "~8.0.0 || ~8.1.0" + "php": ">=5.6" }, "require-dev": { - "cache/taggable-cache": "^1.1.0", - "doctrine/coding-standard": "^9.0", - "doctrine/instantiator": "^1.4.0", + "cache/taggable-cache": "^0.4.0", + "doctrine/instantiator": "^1.0.5", + "ext-bcmath": "*", "ext-gmp": "*", "ext-intl": "*", - "florianv/exchanger": "^2.6.3", - "florianv/swap": "^4.3.0", + "florianv/exchanger": "^1.0", + "florianv/swap": "^3.0", + "friends-of-phpspec/phpspec-code-coverage": "^3.1.1 || ^4.3", "moneyphp/iso-currencies": "^3.2.1", - "php-http/message": "^1.11.0", - "php-http/mock-client": "^1.4.1", - "phpbench/phpbench": "^1.2.5", - "phpspec/phpspec": "^7.2", - "phpunit/phpunit": "^9.5.4", - "psalm/plugin-phpunit": "^0.15.1", - "psr/cache": "^1.0.1", - "vimeo/psalm": "~4.7.0 || ^4.8.2" + "php-http/message": "^1.4", + "php-http/mock-client": "^1.0.0", + "phpspec/phpspec": "^3.4.3", + "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.18 || ^8.5", + "psr/cache": "^1.0", + "symfony/phpunit-bridge": "^4" }, "suggest": { + "ext-bcmath": "Calculate without integer limits", "ext-gmp": "Calculate without integer limits", "ext-intl": "Format Money objects with intl", "florianv/exchanger": "Exchange rates library for PHP", @@ -4909,9 +4977,9 @@ ], "support": { "issues": "https://github.com/moneyphp/money/issues", - "source": "https://github.com/moneyphp/money/tree/v4.0.4" + "source": "https://github.com/moneyphp/money/tree/master" }, - "time": "2022-05-18T19:32:15+00:00" + "time": "2020-03-18T17:49:59+00:00" }, { "name": "monolog/monolog", @@ -7914,22 +7982,18 @@ }, { "name": "setasign/fpdf", - "version": "1.8.4", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/Setasign/FPDF.git", - "reference": "b0ddd9c5b98ced8230ef38534f6f3c17308a7974" + "reference": "d77904018090c17dc9f3ab6e944679a7a47e710a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDF/zipball/b0ddd9c5b98ced8230ef38534f6f3c17308a7974", - "reference": "b0ddd9c5b98ced8230ef38534f6f3c17308a7974", + "url": "https://api.github.com/repos/Setasign/FPDF/zipball/d77904018090c17dc9f3ab6e944679a7a47e710a", + "reference": "d77904018090c17dc9f3ab6e944679a7a47e710a", "shasum": "" }, - "require": { - "ext-gd": "*", - "ext-zlib": "*" - }, "type": "library", "autoload": { "classmap": [ @@ -7954,9 +8018,9 @@ "pdf" ], "support": { - "source": "https://github.com/Setasign/FPDF/tree/1.8.4" + "source": "https://github.com/Setasign/FPDF/tree/1.8.2" }, - "time": "2021-08-30T07:50:06+00:00" + "time": "2019-12-08T10:32:10+00:00" }, { "name": "setasign/fpdi", @@ -8380,6 +8444,82 @@ }, "time": "2022-05-05T17:18:02+00:00" }, + { + "name": "swiftmailer/swiftmailer", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.0|^3.1", + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "symfony/phpunit-bridge": "^4.4|^5.4" + }, + "suggest": { + "ext-intl": "Needed to support internationalized email addresses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "support": { + "issues": "https://github.com/swiftmailer/swiftmailer/issues", + "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", + "type": "tidelift" + } + ], + "abandoned": "symfony/mailer", + "time": "2021-10-18T15:26:12+00:00" + }, { "name": "symfony/console", "version": "v6.1.1", @@ -9684,6 +9824,89 @@ ], "time": "2022-05-24T11:49:31+00:00" }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "143f1881e655bebca1312722af8068de235ae5dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/143f1881e655bebca1312722af8068de235ae5dc", + "reference": "143f1881e655bebca1312722af8068de235ae5dc", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-iconv": "*" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, { "name": "symfony/polyfill-intl-grapheme", "version": "v1.26.0", @@ -11735,16 +11958,16 @@ }, { "name": "brianium/paratest", - "version": "v6.4.4", + "version": "v6.5.0", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "589cdb23728b2a19872945580b95d8aa2c6619da" + "reference": "d22afc08dab73d1dff07c700ed6a78f138f5020e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/589cdb23728b2a19872945580b95d8aa2c6619da", - "reference": "589cdb23728b2a19872945580b95d8aa2c6619da", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/d22afc08dab73d1dff07c700ed6a78f138f5020e", + "reference": "d22afc08dab73d1dff07c700ed6a78f138f5020e", "shasum": "" }, "require": { @@ -11752,23 +11975,25 @@ "ext-pcre": "*", "ext-reflection": "*", "ext-simplexml": "*", + "jean85/pretty-package-versions": "^2.0.5", "php": "^7.3 || ^8.0", - "phpunit/php-code-coverage": "^9.2.11", + "phpunit/php-code-coverage": "^9.2.15", "phpunit/php-file-iterator": "^3.0.6", "phpunit/php-timer": "^5.0.3", - "phpunit/phpunit": "^9.5.14", - "sebastian/environment": "^5.1.3", - "symfony/console": "^5.4.0 || ^6.0.0", - "symfony/process": "^5.4.0 || ^6.0.0" + "phpunit/phpunit": "^9.5.21", + "sebastian/environment": "^5.1.4", + "symfony/console": "^5.4.9 || ^6.1.1", + "symfony/process": "^5.4.8 || ^6.1.0" }, "require-dev": { "doctrine/coding-standard": "^9.0.0", + "ext-pcov": "*", "ext-posix": "*", - "infection/infection": "^0.26.5", + "infection/infection": "^0.26.12", "malukenho/mcbumpface": "^1.1.5", - "squizlabs/php_codesniffer": "^3.6.2", - "symfony/filesystem": "^v5.4.0 || ^6.0.0", - "vimeo/psalm": "^4.20.0" + "squizlabs/php_codesniffer": "^3.7.1", + "symfony/filesystem": "^5.4.9 || ^6.1.0", + "vimeo/psalm": "^4.23.0" }, "bin": [ "bin/paratest" @@ -11807,7 +12032,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v6.4.4" + "source": "https://github.com/paratestphp/paratest/tree/v6.5.0" }, "funding": [ { @@ -11819,7 +12044,7 @@ "type": "paypal" } ], - "time": "2022-03-28T07:55:11+00:00" + "time": "2022-06-23T13:00:19+00:00" }, { "name": "darkaonline/l5-swagger", @@ -14706,5 +14931,5 @@ "platform-dev": { "php": "^7.4|^8.0" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.1.0" } diff --git a/config/app.php b/config/app.php index 13222c030f18..445a57e65d66 100644 --- a/config/app.php +++ b/config/app.php @@ -169,7 +169,7 @@ return [ Illuminate\Filesystem\FilesystemServiceProvider::class, Illuminate\Foundation\Providers\FoundationServiceProvider::class, Illuminate\Hashing\HashServiceProvider::class, - App\Providers\MailServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, Illuminate\Notifications\NotificationServiceProvider::class, Illuminate\Pagination\PaginationServiceProvider::class, Illuminate\Pipeline\PipelineServiceProvider::class, diff --git a/config/mail.php b/config/mail.php index 69f730d075b3..2b778f378dfe 100644 --- a/config/mail.php +++ b/config/mail.php @@ -78,11 +78,6 @@ return [ 'office365' => [ 'transport' => 'office365', ], - - 'cocopostmark' => [ - 'transport' => 'cocopostmark', - ], - 'failover' => [ 'transport' => 'failover', 'mailers' => [