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>
48 lines
1.3 KiB
PHP
48 lines
1.3 KiB
PHP
<?php
|
|
|
|
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;
|
|
|
|
/**
|
|
* Outbound email to contacts. Uses the app's configured mailer (set MAIL_* to
|
|
* a Ladill Bird SMTP credential in production so mail leaves as the account's
|
|
* sender). Failures are swallowed + logged; the caller decides what to record.
|
|
*/
|
|
class EmailService
|
|
{
|
|
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, $logoUrl, $companyName));
|
|
|
|
return true;
|
|
} catch (\Throwable $e) {
|
|
Log::warning('Frontdesk email send failed', ['to' => $to, 'error' => $e->getMessage()]);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|