From 929919efb35a0bb10f0a4c546d83a2146af5cbe0 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Sat, 11 Apr 2026 15:21:18 +0200 Subject: [PATCH 1/2] WIP: Add default filters to replace email functions. --- src/wp-includes/default-filters.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/wp-includes/default-filters.php b/src/wp-includes/default-filters.php index 4b6d9de25fa11..13e55bac3b0f3 100644 --- a/src/wp-includes/default-filters.php +++ b/src/wp-includes/default-filters.php @@ -28,6 +28,8 @@ die( '-1' ); } +global $wpdb; + // Strip, trim, kses, special chars for string saves. foreach ( array( 'pre_term_name', 'pre_comment_author_name', 'pre_link_name', 'pre_link_target', 'pre_link_rel', 'pre_user_display_name', 'pre_user_first_name', 'pre_user_last_name', 'pre_user_nickname' ) as $filter ) { add_filter( $filter, 'sanitize_text_field' ); @@ -272,6 +274,10 @@ // Email filters. add_filter( 'wp_mail', 'wp_staticize_emoji_for_email' ); +if ( is_utf8_charset() && 'utf8mb4' === $wpdb->charset ) { + add_filter( 'is_email', 'is_unicode_email', 8, 3 ); + add_filter( 'sanitize_email', 'sanitize_unicode_email', 8, 3 ); +} // Robots filters. add_filter( 'wp_robots', 'wp_robots_noindex' ); From 141c61b55465da42cf0655047299de7668f0f6a3 Mon Sep 17 00:00:00 2001 From: Dennis Snell Date: Mon, 13 Apr 2026 16:57:09 +0200 Subject: [PATCH 2/2] Add scaffolding for hypthetical new Unicode email functions --- src/wp-includes/formatting.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/wp-includes/formatting.php b/src/wp-includes/formatting.php index 498d676f5c20f..c48c5f86be2e6 100644 --- a/src/wp-includes/formatting.php +++ b/src/wp-includes/formatting.php @@ -3624,6 +3624,28 @@ function is_email( $email, $deprecated = false ) { return apply_filters( 'is_email', $email, $email, null ); } +$u = new Uri\WhatWg\Url('blar'); +$u->getAsciiHost() + +function is_unicode_email_filter( $ignored_filtered_email, $originally_provided_email, $ignored_message ) { + remove_filter( 'is_email', 'is_unicode_email_filter' ); + $result = is_unicode_email( $originally_provided_email ); + add_filter( 'is_email', 'is_unicode_email_filter', 8, 3 ); + + return $result; +} + +function is_unicode_email( $email ) { + $email = WP_Email_Address::from_string( $email ); + if ( null === $email ) { + return apply_filters( 'is_email', false, $email, 'non_parsable_email' ); + } + + ... + + return apply_filters( 'is_email', $email, $email, null ); +} + /** * Converts to ASCII from email subjects. *