diff --git src/wp-includes/class-walker-comment.php src/wp-includes/class-walker-comment.php
index e82ec66..c589c93 100644
--- src/wp-includes/class-walker-comment.php
+++ src/wp-includes/class-walker-comment.php
@@ -270,6 +270,10 @@ class Walker_Comment extends Walker {
 		<em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ) ?></em>
 		<br />
 		<?php endif; ?>
+		<?php if ( has_action( 'comment_unapproved_to_approved', 'wp_new_comment_notify_commenter' ) ) : ?>
+			<em class="comment-awaiting-moderation"><?php _e( 'You will receive an email when your comment has been approved.' ) ?></em>
+			<br/>
+		<?php endif; ?>
 
 		<div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment, $args ) ); ?>">
 			<?php
@@ -334,6 +338,9 @@ class Walker_Comment extends Walker {
 					<?php if ( '0' == $comment->comment_approved ) : ?>
 					<p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ); ?></p>
 					<?php endif; ?>
+					<?php if ( has_action( 'comment_unapproved_to_approved', 'wp_new_comment_notify_commenter' ) ) : ?>
+					<p class="comment-awaiting-moderation"><?php _e( 'You will receive an email when it gets approved.' ) ?></p>
+					<?php endif; ?>
 				</footer><!-- .comment-meta -->
 
 				<div class="comment-content">
diff --git src/wp-includes/comment.php src/wp-includes/comment.php
index c62a920..6a75abb 100644
--- src/wp-includes/comment.php
+++ src/wp-includes/comment.php
@@ -1813,6 +1813,94 @@ function wp_new_comment_notify_postauthor( $comment_ID ) {
 }
 
 /**
+ * Notify a comment author when their comment gets approved.
+ *
+ * This notification is only sent once when the comment status
+ * changes from unapproved to approved.
+ *
+ * @since 4.5.0
+ *
+ * @param int|WP_Comment $comment_id Comment ID or WP_Comment object.
+ * @return bool Whether the email was sent successfully.
+ */
+function wp_new_comment_notify_comment_author( $comment_id ) {
+	$comment = get_comment( $comment_id );
+
+	if ( ! $comment ) {
+		return false;
+	}
+
+	$post           = get_post( $comment->comment_post_ID );
+	$comment_author = get_user_by( 'email', $comment->comment_author_email );
+
+
+	if ( ! $post ) {
+		return false;
+	}
+
+	// The comment was left by the post author.
+	if ( $comment->user_id === $post->post_author || $comment_author === get_userdata( $post->post_author ) ) {
+		return false;
+	}
+
+	if ( 1 === intval( get_comment_meta( $comment->comment_ID, '_wp_comment_author_notification_sent', true ) ) ) {
+		return false;
+	}
+
+	if ( empty( $comment->comment_author_email ) ) {
+		return false;
+	}
+
+	/*
+	 * 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 );
+
+	/* translators: 1: blog name, 2: post title */
+	$subject = sprintf( __( '[%1$s] Your comment on "%2$s" has been approved' ), $blogname, $post->post_title );
+
+	if ( ! empty( $comment->comment_author ) ) {
+		/* translators: 1: comment author's name */
+		$notify_message = sprintf( __( 'Howdy %s,' ), $comment->comment_author ) . "\r\n\r\n";
+	} else {
+		$notify_message = __( 'Howdy,' ) . "\r\n\r\n";
+	}
+
+	/* translators: 1: post title */
+	$notify_message .= sprintf( __( 'Your comment on the post "%1$s" has been approved.' ), $post->post_title ) . "\r\n\r\n";
+	/* translators: 1: comment permalink */
+	$notify_message .= sprintf( __( 'View comment: %s' ), get_comment_link( $comment ) ) . "\r\n";
+
+	/**
+	 * Filter the comment approval notification email text.
+	 *
+	 * @since 4.5.0
+	 *
+	 * @param string     $notify_message The comment notification email text.
+	 * @param WP_Comment $comment        Comment object.
+	 */
+	$notify_message = apply_filters( 'comment_approval_notification_text', $notify_message, $comment );
+
+	/**
+	 * Filter the comment approval notification email subject.
+	 *
+	 * @since 4.5.0
+	 *
+	 * @param string     $subject The comment notification email subject.
+	 * @param WP_Comment $comment Comment object.
+	 */
+	$subject = apply_filters( 'comment_approval_notification_subject', $subject, $comment );
+
+	$sent = wp_mail( $comment->comment_author_email, wp_specialchars_decode( $subject ), $notify_message );
+
+	update_comment_meta( $comment->comment_ID, '_wp_comment_author_notification_sent', intval( $sent ) );
+
+	return $sent;
+}
+
+/**
  * Sets the status of a comment.
  *
  * The 'wp_set_comment_status' action is called after the comment is handled.
diff --git src/wp-includes/default-filters.php src/wp-includes/default-filters.php
index 1faa084..360923d 100644
--- src/wp-includes/default-filters.php
+++ src/wp-includes/default-filters.php
@@ -358,6 +358,7 @@ add_action( 'comment_post', 'wp_new_comment_notify_postauthor' );
 add_action( 'after_password_reset', 'wp_password_change_notification' );
 add_action( 'register_new_user',      'wp_send_new_user_notifications' );
 add_action( 'edit_user_created_user', 'wp_send_new_user_notifications', 10, 2 );
+add_action( 'comment_unapproved_to_approved', 'wp_new_comment_notify_comment_author' );
 
 // REST API actions.
 add_action( 'init',          'rest_api_init' );
diff --git tests/phpunit/tests/comment.php tests/phpunit/tests/comment.php
index 844e4d1..2680d69 100644
--- tests/phpunit/tests/comment.php
+++ tests/phpunit/tests/comment.php
@@ -407,7 +407,9 @@ class Tests_Comment extends WP_UnitTestCase {
 		) );
 
 		$comment = $this->factory->comment->create( array(
-			'comment_post_ID' => $post,
+			'comment_post_ID'      => $post,
+			'comment_author'       => rand_str(),
+			'comment_author_email' => rand_str() . '@example.com',
 		) );
 
 		return array(
@@ -499,6 +501,102 @@ class Tests_Comment extends WP_UnitTestCase {
 	}
 
 	/**
+	 * @ticket 33717
+	 */
+	public function test_wp_new_comment_notify_comment_author() {
+		$comment_data = $this->setup_notify_comment();
+		$comment      = get_comment( $comment_data['comment'] );
+
+		$this->assertTrue( $this->try_sending_comment_author_notification( $comment ) );
+		$this->assertSame( 1, (int) get_comment_meta( $comment->comment_ID, '_wp_commenter_notification_sent', true ) );
+	}
+
+	/**
+	 * @ticket 33717
+	 */
+	public function test_wp_new_comment_notify_comment_author_invalid_comment_id() {
+		$this->assertFalse( wp_new_comment_notify_comment_author( 999 ) );
+	}
+
+	/**
+	 * @ticket 33717
+	 */
+	public function test_wp_new_comment_notify_comment_author_invalid_post_id() {
+		$comment = $this->factory->comment->create( array(
+			'comment_post_ID'      => 999,
+			'comment_author'       => rand_str(),
+			'comment_author_email' => rand_str() . '@example.com',
+		) );
+
+		$this->assertFalse( wp_new_comment_notify_comment_author( $comment ) );
+	}
+
+	/**
+	 * @ticket 33717
+	 */
+	public function test_wp_new_comment_notify_comment_author_has_no_email_address() {
+		$post = $this->factory->post->create( array(
+			'post_author' => self::$user_id,
+		) );
+
+		$comment = $this->factory->comment->create( array(
+			'comment_post_ID'      => $post,
+		) );
+
+		$this->assertFalse( wp_new_comment_notify_comment_author( $comment ) );
+	}
+
+	/**
+	 * @ticket 33717
+	 */
+	public function test_wp_new_comment_notify_comment_author_is_post_author() {
+		$post = $this->factory->post->create( array(
+			'post_author' => self::$user_id,
+		) );
+
+		$comment = $this->factory->comment->create( array(
+			'comment_post_ID' => $post,
+			'user_id'         => self::$user_id,
+		) );
+
+		$this->assertFalse( wp_new_comment_notify_comment_author( $comment ) );
+	}
+
+	/**
+	 * @ticket 33717
+	 */
+	public function test_wp_new_comment_notify_comment_author_multiple_times() {
+		$comment_data = $this->setup_notify_comment();
+		$comment      = get_comment( $comment_data['comment'] );
+
+		$this->assertTrue($this->try_sending_comment_author_notification( $comment ) );
+		$this->assertSame( 1, (int) get_comment_meta( $comment->comment_ID, '_wp_commenter_notification_sent', true ) );
+		$this->assertFalse($this->try_sending_comment_author_notification( $comment ) );
+	}
+
+	/**
+	 * Helper function to test comment author notifications.
+	 *
+	 * @param WP_Comment $comment
+	 * @return bool
+	 */
+	public function try_sending_comment_author_notification( $comment ) {
+		wp_new_comment_notify_comment_author( $comment->comment_ID );
+
+		if ( isset( $GLOBALS['phpmailer']->mock_sent )
+		     && ! empty( $GLOBALS['phpmailer']->mock_sent )
+		     && $comment->comment_author_email == $GLOBALS['phpmailer']->mock_sent[0]['to'][0][0]
+		) {
+			$email_sent = true;
+		} else {
+			$email_sent = false;
+		}
+		unset( $GLOBALS['phpmailer']->mock_sent );
+
+		return $email_sent;
+	}
+
+	/**
 	 * Helper function to test moderator notifications.
 	 *
 	 * @since 4.4.0
