. */ declare(strict_types=1); namespace FireflyIII\Handlers\Events; use Exception; use FireflyIII\Events\AdminRequestedTestMessage; use FireflyIII\Mail\AdminTestMail; use FireflyIII\Repositories\User\UserRepositoryInterface; use Log; use Mail; use Session; /** * Class AdminEventHandler. */ class AdminEventHandler { /** * Sends a test message to an administrator. * * @param AdminRequestedTestMessage $event * * @return bool */ public function sendTestMessage(AdminRequestedTestMessage $event): bool { /** @var UserRepositoryInterface $repository */ $repository = app(UserRepositoryInterface::class); // is user even admin? if ($repository->hasRole($event->user, 'owner')) { $email = $event->user->email; $ipAddress = $event->ipAddress; // see if user has alternative email address: $pref = app('preferences')->getForUser($event->user, 'remote_guard_alt_email', null); if (null !== $pref) { $email = $pref->data; } Log::debug(sprintf('Now in sendTestMessage event handler. Email is %s, IP is %s', $email, $ipAddress)); try { Log::debug('Trying to send message...'); Mail::to($email)->send(new AdminTestMail($email, $ipAddress)); // @codeCoverageIgnoreStart // Laravel cannot pretend this process failed during testing. } catch (Exception $e) { Log::debug('Send message failed! :('); Log::error($e->getMessage()); Log::error($e->getTraceAsString()); Session::flash('error', 'Possible email error: ' . $e->getMessage()); } // @codeCoverageIgnoreEnd Log::debug('If no error above this line, message was sent.'); } return true; } }