. */ namespace FireflyIII\Notifications; use Exception; use FireflyIII\Notifications\Notifiables\OwnerNotifiable; use FireflyIII\Support\Facades\Preferences; use FireflyIII\User; use GuzzleHttp\Exception\ClientException; use Illuminate\Notifications\Notification; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Notification as NotificationFacade; class NotificationSender { public static function send(OwnerNotifiable|User $user, Notification $notification): void { // ::locale($user->locale)) $lang = config('firefly.default_language'); Log::debug(sprintf('Notification send language defaults to "%s"', $lang)); if ($user instanceof User) { $lang = Preferences::getForUser($user, 'language', $lang)->data; Log::debug(sprintf('Notification send language set to "%s"', $lang)); } if ((in_array('email', $notification->broadcastOn(), true) || 0 === count($notification->broadcastOn())) && 'smtp' === config('mail.default')) { Log::debug(sprintf( 'Trying to send notification %s via "%s:%s" using encryption "%s" with username "%s" to "%s".', get_class($notification), config('mail.mailers.smtp.host'), config('mail.mailers.smtp.port'), config('mail.mailers.smtp.encryption'), config('mail.mailers.smtp.username'), $user instanceof OwnerNotifiable ? config('firefly.site_owner') : $user->email )); } try { NotificationFacade::locale($lang)->send($user, $notification); } catch (ClientException $e) { Log::error(sprintf('[a] Error sending notification: %s', $e->getMessage())); } catch (Exception $e) { $message = $e->getMessage(); if (str_contains($message, 'Bcc')) { Log::warning('[Bcc] Could not send notification. Please validate your email settings, use the .env.example file as a guide.'); return; } if (str_contains($message, 'RFC 2822')) { Log::warning('[RFC] Could not send notification. Please validate your email settings, use the .env.example file as a guide.'); return; } Log::error('Could not send notification :(.'); Log::error($e->getMessage()); Log::error($e->getTraceAsString()); } } }