WordPress Version: 6.3
//
// Admin functions.
//
/**
* Checks an email address against a list of banned domains.
*
* This function checks against the Banned Email Domains list
* at wp-admin/network/settings.php. The check is only run on
* self-registrations; user creation at wp-admin/network/users.php
* bypasses this check.
*
* @since MU (3.0.0)
*
* @param string $user_email The email provided by the user at registration.
* @return bool True when the email address is banned, false otherwise.
*/
function is_email_address_unsafe($user_email)
{
$banned_names = get_site_option('banned_email_domains');
if ($banned_names && !is_array($banned_names)) {
$banned_names = explode("\n", $banned_names);
}
$is_email_address_unsafe = false;
if ($banned_names && is_array($banned_names) && false !== strpos($user_email, '@', 1)) {
$banned_names = array_map('strtolower', $banned_names);
$normalized_email = strtolower($user_email);
list($email_local_part, $email_domain) = explode('@', $normalized_email);
foreach ($banned_names as $banned_domain) {
if (!$banned_domain) {
continue;
}
if ($email_domain === $banned_domain) {
$is_email_address_unsafe = true;
break;
}
if (str_ends_with($normalized_email, ".{$banned_domain}")) {
$is_email_address_unsafe = true;
break;
}
}
}
/**
* Filters whether an email address is unsafe.
*
* @since 3.5.0
*
* @param bool $is_email_address_unsafe Whether the email address is "unsafe". Default false.
* @param string $user_email User email address.
*/
return apply_filters('is_email_address_unsafe', $is_email_address_unsafe, $user_email);
}