mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-10 05:02:36 +01:00
Mailers for Laravel
This commit is contained in:
parent
6bd785cc66
commit
b1ff9f0305
@ -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';
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,31 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Helpers\Mail;
|
||||
|
||||
use App\CustomMailDriver\CustomTransport;
|
||||
use App\Helpers\Mail\Office365MailTransport;
|
||||
use Dacastro4\LaravelGmail\Services\Message\Mail;
|
||||
use Illuminate\Mail\MailManager;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
|
||||
class GmailTransportManager extends MailManager
|
||||
{
|
||||
protected function createGmailTransport()
|
||||
{
|
||||
return new GmailTransport(new Mail);
|
||||
}
|
||||
|
||||
protected function createOffice365Transport()
|
||||
{
|
||||
return new Office365MailTransport();
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Helpers\Mail;
|
||||
|
||||
use App\Helpers\Mail\Office365MailTransport;
|
||||
use Illuminate\Mail\MailManager;
|
||||
|
||||
class Office365TransportManager extends MailManager
|
||||
{
|
||||
protected function createOffice365Transport()
|
||||
{
|
||||
return new Office365MailTransport();
|
||||
}
|
||||
}
|
@ -163,4 +163,9 @@ class EmailEntity implements ShouldQueue
|
||||
|
||||
return (new $class($this->invitation, $this->reminder_template, $this->template_data))->build();
|
||||
}
|
||||
|
||||
public function failed($e)
|
||||
{
|
||||
nlog($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,61 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Invoice Ninja (https://invoiceninja.com).
|
||||
*
|
||||
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||
*
|
||||
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
|
||||
*
|
||||
* @license https://www.elastic.co/licensing/elastic-license
|
||||
*/
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Utils\CssInlinerPlugin;
|
||||
use GuzzleHttp\Client as HttpClient;
|
||||
use Illuminate\Container\Container;
|
||||
use Illuminate\Mail\MailServiceProvider as MailProvider;
|
||||
use Illuminate\Mail\TransportManager;
|
||||
|
||||
class MailServiceProvider extends MailProvider
|
||||
{
|
||||
|
||||
public function boot()
|
||||
{
|
||||
// app('mail.manager')->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()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -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",
|
||||
|
323
composer.lock
generated
323
composer.lock
generated
@ -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"
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -78,11 +78,6 @@ return [
|
||||
'office365' => [
|
||||
'transport' => 'office365',
|
||||
],
|
||||
|
||||
'cocopostmark' => [
|
||||
'transport' => 'cocopostmark',
|
||||
],
|
||||
|
||||
'failover' => [
|
||||
'transport' => 'failover',
|
||||
'mailers' => [
|
||||
|
Loading…
Reference in New Issue
Block a user