fix(email): Emails are not sent in multiple cases

- fix(email): transactional emails are all not sent if `Use system wide (transactional) email settings` is disabled and no other email provide is setup on the Notifications page
- fix(email): no emails are sent if SMTP username and SMTP password are empty (which is the case in dev for example)
- fix(email): Wrong test email notification is used, causing the transactional email test notification to fail if no email provider is set up on the Notifications page.
This commit is contained in:
peaklabs-dev
2025-04-02 16:28:14 +02:00
parent 78e2d63f38
commit d15f1b9b94
5 changed files with 11 additions and 7 deletions

View File

@@ -4,7 +4,7 @@ namespace App\Livewire;
use App\Models\InstanceSettings;
use App\Models\Team;
use App\Notifications\Test;
use App\Notifications\TransactionalEmails\Test;
use Illuminate\Support\Facades\RateLimiter;
use Livewire\Attributes\Locked;
use Livewire\Attributes\Validate;

View File

@@ -12,8 +12,9 @@ class EmailChannel
public function send(SendsEmail $notifiable, Notification $notification): void
{
$useInstanceEmailSettings = $notifiable->emailNotificationSettings->use_instance_email_settings;
$isTransactionalEmail = data_get($notification, 'isTransactionalEmail', false);
$customEmails = data_get($notification, 'emails', null);
if ($useInstanceEmailSettings) {
if ($useInstanceEmailSettings || $isTransactionalEmail) {
$settings = instanceSettings();
} else {
$settings = $notifiable->emailNotificationSettings;
@@ -49,8 +50,8 @@ class EmailChannel
$settings->smtp_port,
$encryption
);
$transport->setUsername($settings->smtp_username);
$transport->setPassword($settings->smtp_password);
$transport->setUsername($settings->smtp_username ?? '');
$transport->setPassword($settings->smtp_password ?? '');
$mailer = new \Symfony\Component\Mailer\Mailer($transport);

View File

@@ -16,9 +16,10 @@ class InvitationLink extends CustomEmailNotification
return [TransactionalEmailChannel::class];
}
public function __construct(public User $user)
public function __construct(public User $user, public bool $isTransactionalEmail)
{
$this->onQueue('high');
$this->isTransactionalEmail = true;
}
public function toMail(): MailMessage

View File

@@ -17,10 +17,11 @@ class ResetPassword extends Notification
public InstanceSettings $settings;
public function __construct($token)
public function __construct($token, public bool $isTransactionalEmail)
{
$this->settings = instanceSettings();
$this->token = $token;
$this->isTransactionalEmail = true;
}
public static function createUrlUsing($callback)

View File

@@ -8,9 +8,10 @@ use Illuminate\Notifications\Messages\MailMessage;
class Test extends CustomEmailNotification
{
public function __construct(public string $emails)
public function __construct(public string $emails, public string $isTransactionalEmail)
{
$this->onQueue('high');
$this->isTransactionalEmail = true;
}
public function via(): array