is_email_address_unsafe

The timeline below displays how wordpress function is_email_address_unsafe has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

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);
}

WordPress Version: 5.5

//
// 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;
            }
            $dotted_domain = ".{$banned_domain}";
            if (substr($normalized_email, -strlen($dotted_domain)) === $dotted_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);
}

WordPress Version: 5.4

//
// 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 Returns true when the email address is banned.
 */
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;
            }
            $dotted_domain = ".{$banned_domain}";
            if (substr($normalized_email, -strlen($dotted_domain)) === $dotted_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);
}

WordPress Version: 4.9

// 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 Returns true when the email address is banned.
 */
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;
            }
            $dotted_domain = ".{$banned_domain}";
            if ($dotted_domain === substr($normalized_email, -strlen($dotted_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);
}

WordPress Version: 4.8

// 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
 *
 * @param string $user_email The email provided by the user at registration.
 * @return bool Returns true when the email address is banned.
 */
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;
            }
            $dotted_domain = ".{$banned_domain}";
            if ($dotted_domain === substr($normalized_email, -strlen($dotted_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);
}

WordPress Version: 4.6

// 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
 *
 * @param string $user_email The email provided by the user at registration.
 * @return bool Returns true when the email address is banned.
 */
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)) {
        $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;
            }
            $dotted_domain = ".{$banned_domain}";
            if ($dotted_domain === substr($normalized_email, -strlen($dotted_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);
}

WordPress Version: 3.8

// 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
 *
 * @param string $user_email The email provided by the user at registration.
 * @return bool Returns true when the email address is banned.
 */
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)) {
        $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;
            }
            $dotted_domain = ".{$banned_domain}";
            if ($dotted_domain === substr($normalized_email, -strlen($dotted_domain))) {
                $is_email_address_unsafe = true;
                break;
            }
        }
    }
    /**
     * Filter 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);
}

WordPress Version: 3.7

// 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
 *
 * @param string $user_email The email provided by the user at registration.
 * @return bool Returns true when the email address is banned.
 */
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)) {
        $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;
            }
            $dotted_domain = ".{$banned_domain}";
            if ($dotted_domain === substr($normalized_email, -strlen($dotted_domain))) {
                $is_email_address_unsafe = true;
                break;
            }
        }
    }
    return apply_filters('is_email_address_unsafe', $is_email_address_unsafe, $user_email);
}