diff --git a/wp-includes/pluggable.php b/wp-includes/pluggable.php index e30fad1808..17a23e3cd8 100644 --- a/wp-includes/pluggable.php +++ b/wp-includes/pluggable.php @@ -537,13 +537,28 @@ if ( ! function_exists( 'wp_mail' ) ) : */ do_action_ref_array( 'phpmailer_init', array( &$phpmailer ) ); + $mail_data = compact( 'to', 'subject', 'message', 'headers', 'attachments' ); + // Send! try { - return $phpmailer->send(); - } catch ( PHPMailer\PHPMailer\Exception $e ) { + $send = $phpmailer->send(); - $mail_error_data = compact( 'to', 'subject', 'message', 'headers', 'attachments' ); - $mail_error_data['phpmailer_exception_code'] = $e->getCode(); + /** + * Fires after PHPMailer has successfully sent a mail. + * + * The firing of this action does not necessarily mean that the recipient received the + * email successfully. It only means that the `send` method above was able to + * process the request without any errors. + * + * @since 5.9.0 + * + * @param array $mail_data An array containing the mail recipient, subject, message, headers, and attachments. + */ + do_action( 'wp_mail_succeeded', $mail_data ); + + return $send; + } catch ( PHPMailer\PHPMailer\Exception $e ) { + $mail_data['phpmailer_exception_code'] = $e->getCode(); /** * Fires after a PHPMailer\PHPMailer\Exception is caught. @@ -553,7 +568,7 @@ if ( ! function_exists( 'wp_mail' ) ) : * @param WP_Error $error A WP_Error object with the PHPMailer\PHPMailer\Exception message, and an array * containing the mail recipient, subject, message, headers, and attachments. */ - do_action( 'wp_mail_failed', new WP_Error( 'wp_mail_failed', $e->getMessage(), $mail_error_data ) ); + do_action( 'wp_mail_failed', new WP_Error( 'wp_mail_failed', $e->getMessage(), $mail_data ) ); return false; } diff --git a/wp-includes/version.php b/wp-includes/version.php index d4961e30f9..9ec5252732 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '5.9-alpha-52082'; +$wp_version = '5.9-alpha-52083'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.