Chore: Adding override for email from
This commit is contained in:
@@ -2,15 +2,48 @@
|
|||||||
|
|
||||||
namespace Modules\Core\Providers;
|
namespace Modules\Core\Providers;
|
||||||
|
|
||||||
|
use Illuminate\Mail\Events\MessageSending;
|
||||||
use Illuminate\Support\Facades\Event;
|
use Illuminate\Support\Facades\Event;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
use Modules\Core\Store\Events\StoreDetailsUpdated;
|
use Modules\Core\Store\Events\StoreDetailsUpdated;
|
||||||
use Modules\Core\Store\Listeners\FlushStoreDetailsCache;
|
use Modules\Core\Store\Listeners\FlushStoreDetailsCache;
|
||||||
|
use Modules\Core\Store\Services\StoreDetailsService;
|
||||||
|
use Symfony\Component\Mime\Address;
|
||||||
|
|
||||||
class StoreServiceProvider extends ServiceProvider
|
class StoreServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
public function boot(): void
|
public function boot(): void
|
||||||
{
|
{
|
||||||
Event::listen(StoreDetailsUpdated::class, FlushStoreDetailsCache::class);
|
Event::listen(StoreDetailsUpdated::class, FlushStoreDetailsCache::class);
|
||||||
|
Event::listen(MessageSending::class, [$this, 'applyMailFromName']);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renames the From header's display name to the store's own Store
|
||||||
|
* Details setting, when filled in — leaves the address itself alone
|
||||||
|
* (a deliverability/domain-authentication concern, not something a
|
||||||
|
* merchant should freely edit via a text field) and leaves an
|
||||||
|
* EXPLICIT sender alone too: anything whose From address isn't
|
||||||
|
* config('mail.from.address') deliberately chose a different sender
|
||||||
|
* (e.g. a mailable/notification that calls ->from() itself), which
|
||||||
|
* this provider has no business second-guessing.
|
||||||
|
* StoreDetailsService::current() is forever-cached (see its own
|
||||||
|
* docblock), so this costs nothing extra per send.
|
||||||
|
*/
|
||||||
|
public function applyMailFromName(MessageSending $event): void
|
||||||
|
{
|
||||||
|
$name = app(StoreDetailsService::class)->current()->mail_from_name;
|
||||||
|
|
||||||
|
if (blank($name)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$from = $event->message->getFrom()[0] ?? null;
|
||||||
|
|
||||||
|
if ($from === null || $from->getAddress() !== config('mail.from.address')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$event->message->from(new Address($from->getAddress(), $name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user