From 36fab9c398d48331ee044bfbb1290dcd01ce8765 Mon Sep 17 00:00:00 2001 From: johnjamesjacoby Date: Tue, 4 Nov 2025 17:20:34 +0000 Subject: [PATCH] Mail: reset `Encoding` to 8-bit in `wp_mail()`. The PHPMailer library may automatically switch its encoding based on various internal factors. This commit fixes a bug where the `$phpmailer` global was unintentionally persisting its `Encoding` property from the first `wp_mail()` call to all subsequent calls. This includes unit tests to verify the fix is accurate, and a change to the mock-mailer helper that worked around this bug just-in-time when running the test suite. Props codebuddy, dilip2615, rishabhwp, sajjad67, sirlouen, stephenharris. Fixes #33972. Built from https://develop.svn.wordpress.org/trunk@61131 git-svn-id: http://core.svn.wordpress.org/trunk@60467 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/pluggable.php | 9 +++++++++ wp-includes/version.php | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/wp-includes/pluggable.php b/wp-includes/pluggable.php index 098024b083..37fda9e412 100644 --- a/wp-includes/pluggable.php +++ b/wp-includes/pluggable.php @@ -384,6 +384,15 @@ if ( ! function_exists( 'wp_mail' ) ) : $phpmailer->Body = ''; $phpmailer->AltBody = ''; + /* + * Reset encoding to 8-bit, as it may have been automatically downgraded + * to 7-bit by PHPMailer (based on the body contents) in a previous call + * to wp_mail(). + * + * See https://core.trac.wordpress.org/ticket/33972 + */ + $phpmailer->Encoding = PHPMailer\PHPMailer\PHPMailer::ENCODING_8BIT; + // Set "From" name and email. // If we don't have a name from the input headers. diff --git a/wp-includes/version.php b/wp-includes/version.php index 7509fc9a58..edc566288d 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.9-beta3-61130'; +$wp_version = '6.9-beta3-61131'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.