Brand Frontdesk Laravel mail for hosts and report recipients.
Deploy Ladill Frontdesk / deploy (push) Has been cancelled
Deploy Ladill Frontdesk / deploy (push) Has been cancelled
Pass organization logo/name through ContactMessageMail for daily reports and campaigns, and drop the Ladill product footer. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -39,7 +39,7 @@ class SendDailyReportCommand extends Command
|
||||
|
||||
foreach ($recipients as $address) {
|
||||
if (is_string($address) && filter_var($address, FILTER_VALIDATE_EMAIL)) {
|
||||
$email->send($address, $subject, $body);
|
||||
$email->send($address, $subject, $body, $organization->name, null, $organization);
|
||||
$sent++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace App\Jobs;
|
||||
use App\Models\Activity;
|
||||
use App\Models\Campaign;
|
||||
use App\Models\CampaignRecipient;
|
||||
use App\Models\Organization;
|
||||
use App\Models\User;
|
||||
use App\Services\Campaigns\CampaignBillingService;
|
||||
use App\Services\Campaigns\CampaignMessageService;
|
||||
@@ -56,6 +57,8 @@ class SendCampaignMessageJob implements ShouldQueue
|
||||
return;
|
||||
}
|
||||
|
||||
$organization = Organization::query()->where('owner_ref', $campaign->owner_ref)->first();
|
||||
|
||||
$sent = $campaign->channel === Campaign::CHANNEL_SMS
|
||||
? $sms->send((string) $recipient->recipient_phone, $body)
|
||||
: $email->send(
|
||||
@@ -64,6 +67,7 @@ class SendCampaignMessageJob implements ShouldQueue
|
||||
$body,
|
||||
$this->senderName($campaign),
|
||||
$this->senderEmail($campaign),
|
||||
$organization,
|
||||
);
|
||||
|
||||
if (! $sent) {
|
||||
|
||||
@@ -17,6 +17,8 @@ class ContactMessageMail extends Mailable
|
||||
public string $bodyText,
|
||||
public ?string $fromName = null,
|
||||
public ?string $replyToAddress = null,
|
||||
public ?string $logoUrl = null,
|
||||
public ?string $companyName = null,
|
||||
) {}
|
||||
|
||||
public function envelope(): Envelope
|
||||
@@ -34,6 +36,8 @@ class ContactMessageMail extends Mailable
|
||||
with: [
|
||||
'bodyText' => $this->bodyText,
|
||||
'fromName' => $this->fromName,
|
||||
'logoUrl' => $this->logoUrl,
|
||||
'companyName' => $this->companyName,
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
namespace App\Services\Comms;
|
||||
|
||||
use App\Mail\ContactMessageMail;
|
||||
use App\Models\Organization;
|
||||
use App\Support\OrganizationBranding;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
|
||||
@@ -13,18 +15,31 @@ use Illuminate\Support\Facades\Mail;
|
||||
*/
|
||||
class EmailService
|
||||
{
|
||||
public function send(string $to, string $subject, string $body, ?string $fromName = null, ?string $replyTo = null): bool
|
||||
{
|
||||
public function send(
|
||||
string $to,
|
||||
string $subject,
|
||||
string $body,
|
||||
?string $fromName = null,
|
||||
?string $replyTo = null,
|
||||
?Organization $organization = null,
|
||||
): bool {
|
||||
if (! filter_var($to, FILTER_VALIDATE_EMAIL)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$logoUrl = null;
|
||||
$companyName = null;
|
||||
if ($organization) {
|
||||
$logoUrl = OrganizationBranding::emailLogoUrl($organization);
|
||||
$companyName = $organization->name;
|
||||
}
|
||||
|
||||
try {
|
||||
Mail::to($to)->send(new ContactMessageMail($subject, $body, $fromName, $replyTo));
|
||||
Mail::to($to)->send(new ContactMessageMail($subject, $body, $fromName, $replyTo, $logoUrl, $companyName));
|
||||
|
||||
return true;
|
||||
} catch (\Throwable $e) {
|
||||
Log::warning('CRM email send failed', ['to' => $to, 'error' => $e->getMessage()]);
|
||||
Log::warning('Frontdesk email send failed', ['to' => $to, 'error' => $e->getMessage()]);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user