Block Email Domains in Contact Form 7
Rejects Contact Form 7 submissions whose email address belongs to a domain on your block list, with a clear message under the email field.
Opens WPIDE on
Code
// Domains that may not be used in email fields.
$wpide_cf7_blocked_domains = array( 'mailinator.com', 'yopmail.com', 'tempmail.com', 'guerrillamail.com' );
$wpide_cf7_check_domain = function ( $result, $tag ) use ( $wpide_cf7_blocked_domains ) {
$email = isset( $_POST[ $tag->name ] ) ? strtolower( trim( sanitize_email( wp_unslash( $_POST[ $tag->name ] ) ) ) ) : '';
$domain = substr( strrchr( $email, '@' ), 1 );
if ( '' === (string) $domain ) {
return $result;
}
foreach ( $wpide_cf7_blocked_domains as $blocked ) {
if ( $domain === $blocked || substr( $domain, -strlen( '.' . $blocked ) ) === '.' . $blocked ) {
$result->invalidate( $tag, 'Please use a different email address.' );
break;
}
}
return $result;
};
add_filter( 'wpcf7_validate_email', $wpide_cf7_check_domain, 20, 2 );
add_filter( 'wpcf7_validate_email*', $wpide_cf7_check_domain, 20, 2 );
Notes
List bare domains; subdomains of a listed domain are blocked too.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.