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
- Have at least one team member enable this notification type by email in their notification settings.
- Or set additional recipient email addresses (custom recipients) on the notification configuration so the channel has a target.
- 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
- During team setup, have each member enable at least one email notification.
- Set custom recipient addresses for shared inboxes so delivery never depends on individual preferences.
- Audit notification settings when onboarding new teams.
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
- Recipient is not part of the team
- No email settings found.
- No email settings found.
- Too many messages sent!
- Pre-deployment command: Could not find a valid container. Is
AI-assisted analysis of coollabsio/coolify@70b9acc424 (2026-08-17).
Data as JSON: /api/errors/e251f8f840f51572.
Report an issue: GitHub.