From 7a20dc5c12c18c77759ec841217d4737f589ad4a Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 12 Jan 2017 21:19:13 +0200 Subject: [PATCH] Enable sending emails from alternate domain --- app/Constants/Domain.php | 5 +++++ app/Models/Account.php | 2 ++ app/Models/Traits/SendsEmails.php | 24 ++++++++++++++++++++++++ app/Ninja/Mailers/ContactMailer.php | 6 ++++-- app/Ninja/Mailers/Mailer.php | 11 ++++++++--- 5 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 app/Models/Traits/SendsEmails.php diff --git a/app/Constants/Domain.php b/app/Constants/Domain.php index 670d45797d53..afdcbf90c52e 100644 --- a/app/Constants/Domain.php +++ b/app/Constants/Domain.php @@ -21,4 +21,9 @@ class Domain { return 'https://app.' . static::getDomainFromId($id); } + + public static function getEmailFromId($id) + { + return 'maildelivery@' . static::getDomainFromId($id); + } } diff --git a/app/Models/Account.php b/app/Models/Account.php index 7b06dc46b55d..88d9308e01be 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -14,6 +14,7 @@ use Illuminate\Database\Eloquent\SoftDeletes; use Laracasts\Presenter\PresentableTrait; use App\Models\Traits\PresentsInvoice; use App\Models\Traits\GeneratesNumbers; +use App\Models\Traits\SendsEmails; /** * Class Account @@ -24,6 +25,7 @@ class Account extends Eloquent use SoftDeletes; use PresentsInvoice; use GeneratesNumbers; + use SendsEmails; /** * @var string diff --git a/app/Models/Traits/SendsEmails.php b/app/Models/Traits/SendsEmails.php new file mode 100644 index 000000000000..8c80012f4c9e --- /dev/null +++ b/app/Models/Traits/SendsEmails.php @@ -0,0 +1,24 @@ +isPro() ? $this->bcc_email : false; + } + + public function getFromEmail() + { + if ( ! $this->isPro() || ! Utils::isNinja()) { + return false; + } + + return Domain::getEmailFromId($this->domain_id); + } +} diff --git a/app/Ninja/Mailers/ContactMailer.php b/app/Ninja/Mailers/ContactMailer.php index f63df4b75e6e..ddd8958bd65e 100644 --- a/app/Ninja/Mailers/ContactMailer.php +++ b/app/Ninja/Mailers/ContactMailer.php @@ -199,7 +199,8 @@ class ContactMailer extends Mailer 'invoice' => $invoice, 'documents' => $documentStrings, 'notes' => $reminder, - 'bcc_email' => $account->isPro() ? $account->bcc_email : false, + 'bccEmail' => $account->getBccEmail(), + 'fromEmail' => $account->getFromEmail(), ]; if ($account->attachPDF()) { @@ -286,7 +287,8 @@ class ContactMailer extends Mailer 'account' => $account, 'payment' => $payment, 'entityType' => ENTITY_INVOICE, - 'bcc_email' => $account->isPro() ? $account->bcc_email : false, + 'bccEmail' => $account->getBccEmail(), + 'fromEmail' => $account->getFromEmail(), ]; if ($account->attachPDF()) { diff --git a/app/Ninja/Mailers/Mailer.php b/app/Ninja/Mailers/Mailer.php index 27b0135d1206..5451653473de 100644 --- a/app/Ninja/Mailers/Mailer.php +++ b/app/Ninja/Mailers/Mailer.php @@ -42,14 +42,19 @@ class Mailer $replyEmail = $fromEmail; $fromEmail = CONTACT_EMAIL; + // Optionally send for alternate domain + if (!empty($data['fromEmail'])) { + $fromEmail = $data['fromEmail']; + } + $message->to($toEmail) ->from($fromEmail, $fromName) ->replyTo($replyEmail, $fromName) ->subject($subject); // Optionally BCC the email - if (!empty($data['bcc_email'])) { - $message->bcc($data['bcc_email']); + if (!empty($data['bccEmail'])) { + $message->bcc($data['bccEmail']); } // Attach the PDF to the email @@ -58,7 +63,7 @@ class Mailer } // Attach documents to the email - if(!empty($data['documents'])){ + if (!empty($data['documents'])){ foreach($data['documents'] as $document){ $message->attachData($document['data'], $document['name']); }