mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Fixes for multi mailer - gmail
This commit is contained in:
parent
0b8bf4fbf1
commit
aa9970326c
@ -12,6 +12,7 @@
|
||||
namespace App\Helpers\Mail;
|
||||
|
||||
use App\Utils\TempFile;
|
||||
use Dacastro4\LaravelGmail\Facade\LaravelGmail;
|
||||
use Dacastro4\LaravelGmail\Services\Message\Mail;
|
||||
use Illuminate\Mail\Transport\Transport;
|
||||
use Swift_Mime_SimpleMessage;
|
||||
@ -43,17 +44,21 @@ class GmailTransport extends Transport
|
||||
{
|
||||
/*We should nest the token in the message and then discard it as needed*/
|
||||
|
||||
$token = $message->getHeaders()->get('GmailToken');
|
||||
$token = $message->getHeaders()->get('GmailToken')->getValue();
|
||||
$user_id = $message->getHeaders()->get('UserId')->getValue();
|
||||
|
||||
LaravelGmail::setUserId($user_id);
|
||||
|
||||
nlog("gmail transporter token = {$token}");
|
||||
|
||||
$message->getHeaders()->remove('GmailToken');
|
||||
$message->getHeaders()->remove('UserId');
|
||||
|
||||
nlog("inside gmail sender with token {$token}");
|
||||
|
||||
$this->beforeSendPerformed($message);
|
||||
|
||||
$this->gmail->using($this->token);
|
||||
$this->gmail->using($token);
|
||||
$this->gmail->to($message->getTo());
|
||||
$this->gmail->from($message->getFrom());
|
||||
$this->gmail->subject($message->getSubject());
|
||||
@ -82,6 +87,7 @@ class GmailTransport extends Transport
|
||||
|
||||
$this->sendPerformed($message);
|
||||
|
||||
|
||||
return $this->numberOfRecipients($message);
|
||||
}
|
||||
}
|
||||
|
@ -83,10 +83,10 @@ class BaseMailerJob implements ShouldQueue
|
||||
* just for this request.
|
||||
*/
|
||||
|
||||
config(['mail.driver' => 'gmail']);
|
||||
config(['services.gmail.token' => $user->oauth_user_token->access_token]);
|
||||
config(['mail.from.address' => $user->email]);
|
||||
config(['mail.from.name' => $user->present()->name()]);
|
||||
// config(['mail.driver' => 'gmail']);
|
||||
// config(['services.gmail.token' => $user->oauth_user_token->access_token]);
|
||||
// config(['mail.from.address' => $user->email]);
|
||||
// config(['mail.from.name' => $user->present()->name()]);
|
||||
|
||||
//(new MailServiceProvider(app()))->register();
|
||||
|
||||
|
@ -34,6 +34,7 @@ use Illuminate\Support\Facades\Config;
|
||||
use Illuminate\Support\Facades\Lang;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Turbo124\Beacon\Facades\LightLogs;
|
||||
use Dacastro4\LaravelGmail\Facade\LaravelGmail;
|
||||
|
||||
/*Multi Mailer implemented*/
|
||||
|
||||
@ -105,12 +106,14 @@ class NinjaMailerJob implements ShouldQueue
|
||||
App::forgetInstance('translator');
|
||||
App::forgetInstance('mail.manager'); //singletons must be destroyed!
|
||||
App::forgetInstance('mailer');
|
||||
App::forgetInstance('laravelgmail');
|
||||
|
||||
/* Inject custom translations if any exist */
|
||||
Lang::replace(Ninja::transformTranslations($this->nmo->settings));
|
||||
|
||||
switch ($this->nmo->settings->email_sending_method) {
|
||||
case 'default':
|
||||
config(['mail.driver' => config('mail.default')]);
|
||||
break;
|
||||
case 'gmail':
|
||||
$this->setGmailMailer();
|
||||
@ -118,10 +121,15 @@ class NinjaMailerJob implements ShouldQueue
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
(new MailServiceProvider(app()))->register();
|
||||
}
|
||||
|
||||
private function setGmailMailer()
|
||||
{
|
||||
if(LaravelGmail::check())
|
||||
LaravelGmail::logout();
|
||||
|
||||
$sending_user = $this->nmo->settings->gmail_sending_user_id;
|
||||
|
||||
$user = User::find($this->decodePrimaryKey($sending_user));
|
||||
@ -141,22 +149,18 @@ class NinjaMailerJob implements ShouldQueue
|
||||
* just for this request.
|
||||
*/
|
||||
|
||||
// config(['mail.driver' => 'gmail']);
|
||||
// config(['services.gmail.token' => $user->oauth_user_token->access_token]);
|
||||
// config(['mail.from.address' => $user->email]);
|
||||
// config(['mail.from.name' => $user->present()->name()]);
|
||||
|
||||
// (new MailServiceProvider(app()))->register();
|
||||
|
||||
// nlog("after registering mail service provider");
|
||||
// nlog(config('services.gmail.token'));
|
||||
config(['mail.driver' => 'gmail']);
|
||||
(new MailServiceProvider(app()))->register();
|
||||
|
||||
$token = $user->oauth_user_token->access_token;
|
||||
$user_id = $user->oauth_user_id;
|
||||
|
||||
$this->nmo
|
||||
->mailable
|
||||
->from($user->email, $user->present()->name())
|
||||
->withSwiftMessage(function ($message) use($token) {
|
||||
$message->getHeaders()->addTextHeader('GmailToken', $token);
|
||||
->withSwiftMessage(function ($message) use($token, $user_id) {
|
||||
$message->getHeaders()->addTextHeader('GmailToken', $token);
|
||||
$message->getHeaders()->addTextHeader('UserId', $user_id);
|
||||
});
|
||||
|
||||
}
|
||||
|
@ -61,6 +61,7 @@ class SendVerificationNotification implements ShouldQueue
|
||||
// $event->user->notify(new VerifyUser($event->user, $event->company));
|
||||
|
||||
Ninja::registerNinjaUser($event->user);
|
||||
|
||||
} catch (Exception $e) {
|
||||
nlog("I couldn't send the email " . $e->getMessage());
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ class TemplateEmail extends Mailable
|
||||
])
|
||||
->withSwiftMessage(function ($message) use($company){
|
||||
$message->getHeaders()->addTextHeader('Tag', $company->company_key);
|
||||
});;
|
||||
});
|
||||
|
||||
//conditionally attach files
|
||||
if ($settings->pdf_email_attachment !== false && ! empty($this->build_email->getAttachments())) {
|
||||
|
99
config/gmail.php
Normal file
99
config/gmail.php
Normal file
@ -0,0 +1,99 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Gmail Configuration
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
|
|
||||
|
|
||||
| Scopes Available:
|
||||
|
|
||||
| * all - Read, send, delete, and manage your email
|
||||
| * compose - Manage drafts and send emails
|
||||
| * insert - Insert mail into your mailbox
|
||||
| * labels - Manage mailbox labels
|
||||
| * metadata - View your email message metadata such as labels and headers, but not the email body
|
||||
| * modify - View and modify but not delete your email
|
||||
| * readonly - View your email messages and settings
|
||||
| * send - Send email on your behalf
|
||||
| * settings_basic - Manage your basic mail settings
|
||||
| * settings_sharing - Manage your sensitive mail settings, including who can manage your mail
|
||||
|
|
||||
| Leaving the scopes empty fill use readonly
|
||||
|
|
||||
| Credentials File Name
|
||||
|
|
||||
*/
|
||||
|
||||
'project_id' => env('GOOGLE_PROJECT_ID'),
|
||||
'client_id' => env('GOOGLE_CLIENT_ID'),
|
||||
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
|
||||
'redirect_url' => env('GOOGLE_REDIRECT_URI', '/'),
|
||||
|
||||
'state' => null,
|
||||
|
||||
'scopes' => [
|
||||
'readonly',
|
||||
'modify',
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Additional Scopes [URL Style]
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| 'additional_scopes' => [
|
||||
| 'https://www.googleapis.com/auth/drive',
|
||||
| 'https://www.googleapis.com/auth/documents'
|
||||
| ],
|
||||
|
|
||||
|
|
||||
*/
|
||||
|
||||
'additional_scopes' => [
|
||||
|
||||
],
|
||||
|
||||
'access_type' => 'offline',
|
||||
|
||||
'approval_prompt' => 'force',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Credentials File Name
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| :email to use, clients email on the file
|
||||
|
|
||||
|
|
||||
*/
|
||||
|
||||
'credentials_file_name' => env('GOOGLE_CREDENTIALS_NAME', 'gmail-json'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Allow Multiple Credentials
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Allow the application to store multiple credential json files.
|
||||
|
|
||||
|
|
||||
*/
|
||||
|
||||
'allow_multiple_credentials' => env('GOOGLE_ALLOW_MULTIPLE_CREDENTIALS', false),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Allow Encryption for json Files
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Use Laravel Encrypt in json Files
|
||||
|
|
||||
|
|
||||
*/
|
||||
|
||||
'allow_json_encrypt' => env('GOOGLE_ALLOW_JSON_ENCRYPT', false),
|
||||
];
|
Loading…
x
Reference in New Issue
Block a user