coollabsio/coolify · warning · Exception

No email recipients found

Error message

No email recipients found

What it means

EmailChannel::send() resolves recipients as the notification's custom emails (if provided) or the notifiable team's getRecipients(); when the resulting array is empty it throws before attempting delivery. In practice: custom recipients unset AND no team member currently has email notifications enabled for that event, so there is nowhere to send.

Source

Thrown at app/Notifications/Channels/EmailChannel.php:43

            if ($useInstanceEmailSettings || $isTransactionalEmail) {
                $settings = instanceSettings();
            } else {
                $settings = $notifiable->emailNotificationSettings;
            }

            $isResendEnabled = $settings->resend_enabled;
            $isSmtpEnabled = $settings->smtp_enabled;

            if ($customEmails) {
                $recipients = [$customEmails];
            } else {
                $recipients = $notifiable->getRecipients();
            }

            // Validate team membership for all recipients
            if (count($recipients) === 0) {
                throw new Exception('No email recipients found');
            }

            // Skip team membership validation for test notifications
            $isTestNotification = data_get($notification, 'isTestNotification', false);

            if (! $isTestNotification) {
                foreach ($recipients as $recipient) {
                    // Check if the recipient is part of the team
                    if (! $members->contains('email', $recipient)) {
                        $emailSettings = $notifiable->emailNotificationSettings;
                        data_set($emailSettings, 'smtp_password', '********');
                        data_set($emailSettings, 'resend_api_key', '********');
                        send_internal_notification(sprintf(
                            "Recipient is not part of the team: %s\nTeam: %s\nNotification: %s\nNotifiable: %s\nEmail Settings:\n%s",
                            $recipient,
                            $team,
                            get_class($notification),
                            get_class($notifiable),

View on GitHub (pinned to 70b9acc424)

Solutions

  1. Have at least one team member enable this notification type by email in their notification settings.
  2. Or set additional recipient email addresses (custom recipients) on the notification configuration so the channel has a target.
  3. If email is not used at all, disable the email channel for that notification instead of leaving it half-configured.
Defensive patterns

Strategy: validation

Validate before calling

// Before notify(): ensure the channel has a target
$recipients = $customEmails ? [$customEmails] : $notifiable->getRecipients();
if (count($recipients) === 0) {
    // skip email channel (or disable the notification) instead of throwing
    return; 
}

Try / catch

catch (Exception $e) { if ($e->getMessage() === 'No email recipients found') { log a config warning and continue — one broken channel should not fail the whole notification dispatch; } else { throw $e; } }

Prevention

When it happens

Trigger: Team notification fires while every member has email disabled in their notification preferences; custom email recipients field left blank; test/notification settings saved without ever enabling email for anyone.

Common situations: New teams where nobody opted into email; members toggling off email after being spammed; notification enabled server-wide but per-user preferences all off.

Related errors


AI-assisted analysis of coollabsio/coolify@70b9acc424 (2026-08-17). Data as JSON: /api/errors/e251f8f840f51572. Report an issue: GitHub.