Index: src/wp-includes/pluggable.php
===================================================================
--- src/wp-includes/pluggable.php	(revision 38214)
+++ src/wp-includes/pluggable.php	(working copy)
@@ -1680,9 +1680,43 @@
 		$message = sprintf( __( 'Password changed for user: %s' ), $user->user_login ) . "\r\n";
 		// The blogname option is escaped with esc_html on the way into the database in sanitize_option
 		// we want to reverse this for the plain text arena of emails.
-		$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
+		$blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
+
 		/* translators: %s: site title */
-		wp_mail( get_option( 'admin_email' ), sprintf( __( '[%s] Password Changed' ), $blogname ), $message );
+		$subject = sprintf( __( '[%s] Password Changed' ) );
+		/**
+		 * Filters the subject of the password change notification admin email.
+		 * In pluggable function maybe missing
+		 *
+		 * @since 4.7.0
+		 *
+		 * @param string  $title Default email title.
+		 * @param string  $blogname  title of blog.
+		 */
+		$subject = apply_filters( 'wp_password_change_notification_subject', $subject, $blogname );
+
+		/**
+		 * Filters the message body of the password change notification admin email.
+		 * In pluggable function maybe missing
+		 *
+		 * @since 4.7.0
+		 *
+		 * @param string  $message  Default mail message.
+		 * @param string  $blogname  title of blog.
+		 */
+		$message = apply_filters( 'wp_password_change_notification_message', $message, $blogname );
+		/**
+		 * Filters the password change notification admin email headers.
+		 * In pluggable function maybe missing
+		 *
+		 * @since 4.7.0
+		 *
+		 * @param string $message_headers Headers for the password change notification admin email.
+		 * @param string  $blogname  title of blog.
+		 */
+		$message_headers = apply_filters( 'wp_password_change_notification_headers', '', $blogname );
+
+		wp_mail( get_option( 'admin_email' ), wp_specialchars_decode( $subject ), $message, $message_headers );
 	}
 }
 endif;
@@ -1716,7 +1750,7 @@
 
 	// The blogname option is escaped with esc_html on the way into the database in sanitize_option
 	// we want to reverse this for the plain text arena of emails.
-	$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
+	$blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
 
 	if ( 'user' !== $notify ) {
 		$message  = sprintf( __( 'New user registration on your site %s:' ), $blogname ) . "\r\n\r\n";
@@ -1723,11 +1757,50 @@
 		$message .= sprintf( __( 'Username: %s' ), $user->user_login ) . "\r\n\r\n";
 		$message .= sprintf( __( 'Email: %s' ), $user->user_email ) . "\r\n";
 
-		@wp_mail( get_option( 'admin_email' ), sprintf( __( '[%s] New User Registration' ), $blogname ), $message );
+		/**
+		 * Filters the message body of the new user notify email send to site admin.
+		 * In pluggable function maybe missing
+		 *
+		 * @since 4.7.0
+		 *
+		 * @param string  $message  Default mail message.
+		 * @param string  $blogname  title of blog.
+		 * @param WP_User $user     WP_User object.
+		 */
+
+		$message = apply_filters( 'wp_new_user_notification_admin_message', $message, $blogname, $user );
+		/* translators: %s: site title */
+		$subject = sprintf( __( '[%s] New User Registration' ), $blogname );
+		/**
+		 * Filters the subject of the new user notify email send to site admin.
+		 * In pluggable function maybe missing
+		 *
+		 * @since 4.7.0
+		 *
+		 * @param string  $title Default email title.
+		 * @param string  $blogname  title of blog.
+		 * @param WP_User $user  WP_User object.
+		 */
+
+		$subject = apply_filters( 'wp_new_user_notification_admin_subject', $subject, $blogname, $user );
+
+		/**
+		 * Filters the new user notify send to site admin email headers.
+		 * In pluggable function maybe missing
+		 *
+		 * @since 4.7.0
+		 *
+		 * @param string $message_headers Headers for the new user notify send to site admin email.
+		 * @param string  $blogname  title of blog.
+		 */
+		$message_headers = apply_filters( 'wp_new_user_notification_admin_headers', '', $blogname );
+
+		@wp_mail( get_option( 'admin_email' ), wp_specialchars_decode( $subject ), $message, $message_headers );
 	}
 
 	// `$deprecated was pre-4.3 `$plaintext_pass`. An empty `$plaintext_pass` didn't sent a user notifcation.
 	if ( 'admin' === $notify || ( empty( $deprecated ) && empty( $notify ) ) ) {
+
 		return;
 	}
 
@@ -1745,13 +1818,52 @@
 	$hashed = time() . ':' . $wp_hasher->HashPassword( $key );
 	$wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user->user_login ) );
 
-	$message = sprintf(__('Username: %s'), $user->user_login) . "\r\n\r\n";
-	$message .= __('To set your password, visit the following address:') . "\r\n\r\n";
-	$message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user->user_login), 'login') . ">\r\n\r\n";
 
+	$message = sprintf(__( 'Username: %s' ), $user->user_login) . "\r\n\r\n";
+	$message .= __( 'To set your password, visit the following address:' ) . "\r\n\r\n";
+	$message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user->user_login ), 'login' ) . ">\r\n\r\n";
+
 	$message .= wp_login_url() . "\r\n";
 
-	wp_mail($user->user_email, sprintf(__('[%s] Your username and password info'), $blogname), $message);
+	/**
+	 * Filters the message body of the new user email message.
+	 * In pluggable function maybe missing
+	 *
+	 * @since 4.7.0
+	 *
+	 * @param string  $message  Default mail message.
+	 * @param string  $blogname  title of blog.
+	 * @param string  $key      User activation key.
+	 * @param WP_User $user     WP_User object.
+	 */
+	$message = apply_filters( 'wp_new_user_notification_message', $message, $blogname, $key, $user );
+
+	/* translators: %s: site title */
+	$subject = sprintf( __( '[%s] New User Registration' ), $blogname );
+	/**
+	 * Filters the subject of the new user email.
+	 * In pluggable function maybe missing
+	 *
+	 * @since 4.7.0
+	 *
+	 * @param string  $subject  Default email title.
+	 * @param string  $blogname  title of blog.
+	 * @param WP_User $user     WP_User object.
+	 */
+	$subject = apply_filters( 'wp_new_user_notification_subject', $subject, $blogname, $user );
+	/**
+	 * Filters the new user notify email headers.
+	 * In pluggable function maybe missing
+	 *
+	 * @since 4.7.0
+	 *
+	 * @param string $message_headers Headers for the new user notify email.
+	 * @param string  $blogname  title of blog.
+	 * @param WP_User $user     WP_User object.
+	 */
+	$message_headers = apply_filters( 'wp_new_user_notification_headers', '', $blogname, $user );
+
+	wp_mail( $user->user_email, wp_specialchars_decode( $subject ), $message, $message_headers );
 }
 endif;
 
