diff --git src/wp-includes/class-walker-comment.php src/wp-includes/class-walker-comment.php
index e82ec66..c009147 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 it gets 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-functions.php src/wp-includes/comment-functions.php
index 6b055d1..b5af39d 100644
--- src/wp-includes/comment-functions.php
+++ src/wp-includes/comment-functions.php
@@ -1814,6 +1814,83 @@ function wp_new_comment_notify_postauthor( $comment_ID ) {
 }
 
 /**
+ * Notify a comment author when their comment gets approved.
+ *
+ * This notification is only sent when the comment status
+ * changes from unapproved to approved.
+ *
+ * @since 4.4.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_commenter( $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_commenter_notification_sent', true ) ) ) {
+		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 );
+
+	/* translators: 1: comment author's name */
+	$notify_message = sprintf( __( 'Howdy %s,' ), $comment->comment_author ) . "\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.4.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.4.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_commenter_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 bbe9f24..cdc4cdc 100644
--- src/wp-includes/default-filters.php
+++ src/wp-includes/default-filters.php
@@ -356,6 +356,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' );
+add_action( 'comment_unapproved_to_approved', 'wp_new_comment_notify_commenter' );
 
 // REST API actions.
 add_action( 'init',          'rest_api_init' );
diff --git tests/phpunit/tests/comment.php tests/phpunit/tests/comment.php
index 8faa0b7..d5165c2 100644
--- tests/phpunit/tests/comment.php
+++ tests/phpunit/tests/comment.php
@@ -392,7 +392,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(
@@ -484,6 +486,29 @@ class Tests_Comment extends WP_UnitTestCase {
 	}
 
 	/**
+	 * @ticket 33717
+	 */
+	public function test_wp_new_comment_notify_commenter() {
+		$comment_data = $this->setup_notify_comment();
+		$comment = get_comment(  $comment_data['comment'] );
+
+		$notified = wp_new_comment_notify_commenter( $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 );
+
+		$this->assertTrue( $notified  );
+		$this->assertTrue( $email_sent  );
+	}
+
+	/**
 	 * Helper function to test moderator notifications.
 	 *
 	 * @since 4.4.0
