Index: src/wp-admin/includes/admin-filters.php
===================================================================
--- src/wp-admin/includes/admin-filters.php	(revision 39658)
+++ src/wp-admin/includes/admin-filters.php	(working copy)
@@ -55,6 +55,8 @@
 add_action( 'update_option_siteurl',       'update_home_siteurl', 10, 2 );
 add_action( 'update_option_page_on_front', 'update_home_siteurl', 10, 2 );
 
+// Send email to old email address on change site admin email
+add_action( 'update_option_admin_email', 'send_email_on_admin_email_change', 10, 3 );
 add_filter( 'heartbeat_received', 'wp_check_locked_posts',  10,  3 );
 add_filter( 'heartbeat_received', 'wp_refresh_post_lock',   10,  3 );
 add_filter( 'wp_refresh_nonces', 'wp_refresh_post_nonces', 10,  3 );
Index: src/wp-admin/includes/misc.php
===================================================================
--- src/wp-admin/includes/misc.php	(revision 39658)
+++ src/wp-admin/includes/misc.php	(working copy)
@@ -936,3 +936,75 @@
 	</script>
 	<?php
 }
+
+/**
+ * Send email to old email address on change site admin email
+ * @param type $old_email
+ * @param type $new_email
+ * @param type $option_name
+ * @since 4.8.0
+ */
+function send_email_on_admin_email_change( $old_email, $new_email, $option_name ) {
+
+	/**
+	* Filters whether to send the admin email change.
+	*
+	* @since 4.8.0
+	*
+	*
+	* @param bool  $send     Whether to send the email.
+	* @param array $old_email     The original admin email.
+	* @param array $new_email The updated admin email.
+	*
+	*/
+	$send_admin_email_change_email = apply_filters( 'send_admin_email_change_email', true, $old_email, $new_email );
+	if ( $send_admin_email_change_email ) {
+	/* translators: Do not translate ADMIN_EMAIL, EMAIL, SITENAME, SITEURL: those are placeholders. */
+		$email_change_text = __( 'Hi,
+
+				This notice confirms your site admin e-mail has been changed on ###SITENAME###.
+				Your new site admin e-mail is now "###NEWEMAIL###"
+
+				Regards,
+				All at ###SITENAME###
+				###SITEURL###' );
+
+		$email_change_email = array(
+			'to'      => $old_email,
+			/* translators: Site admin email change notification email subject. 1: Site name */
+			'subject' => __( '[%s] Notice of Admin Email Change' ),
+			'message' => $email_change_text,
+			'headers' => '',
+		);
+		// get blog name
+		$blog_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
+
+		/**
+		* Filters the contents of the email sent when the site admin email is change
+		*
+		*
+		* @since 4.8.0
+		*
+		* @param array $email_change_email {
+		*            Used to build wp_mail().
+		*            @type string $to      The intended recipients.
+		*            @type string $subject The subject of the email.
+		*            @type string $message The content of the email.
+		*                The following strings have a special meaning and will get replaced dynamically:
+		*                - ###NEWEMAIL### The admin email in case this was unexpected.
+		*                - ###SITENAME###    The name of the site.
+		*                - ###SITEURL###     The URL to the site.
+		*            @type string $headers Headers.
+		*        }
+		* @param array $old_email The original email
+		* @param array $new_email The updated email.
+		 */
+		$email_change_email = apply_filters( 'admin_email_change_email', $email_change_email, $old_email, $new_email );
+
+		$email_change_email['message'] = str_replace( '###NEWEMAIL###', $new_email,  $email_change_email[ 'message' ] );
+		$email_change_email['message'] = str_replace( '###SITENAME###', $blog_name, $email_change_email['message'] );
+		$email_change_email['message'] = str_replace( '###SITEURL###', home_url(), $email_change_email['message'] );
+
+		wp_mail( $email_change_email['to'], sprintf( $email_change_email['subject'], $blog_name ), $email_change_email['message'], $email_change_email['headers'] );
+	}
+}
