Index: bp-messages/bp-messages-notifications.php
===================================================================
--- bp-messages/bp-messages-notifications.php
+++ bp-messages/bp-messages-notifications.php
@@ -120,10 +120,16 @@ function messages_format_notifications( $action, $item_id, $secondary_item_id, $
 			$text   = sprintf( __('You have %d new messages', 'buddypress' ), (int) $total_items );
 			$filter = 'bp_messages_multiple_new_message_notification';
 		} else {
-			if ( !empty( $secondary_item_id ) ) {
-				$text = sprintf( __('You have %d new message from %s', 'buddypress' ), (int) $total_items, bp_core_get_user_displayname( $secondary_item_id ) );
+			// get message thread ID
+			$message   = new BP_Messages_Message( $item_id );
+			$thread_id = $message->thread_id;
+
+			$link = bp_get_message_thread_view_link( $thread_id );
+
+			if ( ! empty( $secondary_item_id ) ) {
+				$text = sprintf( __( '%2$s sent you a new private message', 'buddypress' ), (int) $total_items, bp_core_get_user_displayname( $secondary_item_id ) );
 			} else {
-				$text = sprintf( __('You have %d new message',         'buddypress' ), (int) $total_items );
+				$text = sprintf( __( 'You have %d new private message', 'buddypress' ), (int) $total_items );
 			}
 			$filter = 'bp_messages_single_new_message_notification';
 		}
@@ -167,25 +173,21 @@ function bp_messages_message_sent_add_notification( $message ) {
 add_action( 'messages_message_sent', 'bp_messages_message_sent_add_notification', 10 );
 
 /**
- * Mark new message notifications when member views their inbox.
- *
- * @since BuddyPress (1.9.0)
- */
-function bp_messages_screen_inbox_mark_notifications() {
-	if ( bp_is_active( 'notifications' ) ) {
-		bp_notifications_mark_notifications_by_type( bp_loggedin_user_id(), buddypress()->messages->id, 'new_message' );
-	}
-}
-add_action( 'messages_screen_inbox', 'bp_messages_screen_inbox_mark_notifications', 10 );
-
-/**
  * Mark new message notification when member reads a message thread directly.
  *
  * @since BuddyPress (1.9.0)
  */
 function bp_messages_screen_conversation_mark_notifications() {
 	if ( bp_is_active( 'notifications' ) ) {
-		bp_notifications_mark_notifications_by_item_id( bp_loggedin_user_id(), (int) bp_action_variable( 0 ), buddypress()->messages->id, 'new_message' );
+		global $thread_template;
+
+		// get all message ids from message thread
+		$message_ids = wp_list_pluck( $thread_template->thread->messages, 'id' );
+
+		// mark each notification for each PM message as read in a loop
+		foreach ( $message_ids as $message_id ) {
+			bp_notifications_mark_notifications_by_item_id( bp_loggedin_user_id(), (int) $message_id, buddypress()->messages->id, 'new_message' );
+		}
 	}
 }
-add_action( 'messages_screen_conversation', 'bp_messages_screen_inbox_mark_notifications', 10 );
+add_action( 'thread_loop_start', 'bp_messages_screen_conversation_mark_notifications', 10 );
Index: bp-messages/bp-messages-template.php
===================================================================
--- bp-messages/bp-messages-template.php
+++ bp-messages/bp-messages-template.php
@@ -252,12 +252,19 @@ function bp_message_thread_to() {
 		return apply_filters( 'bp_message_thread_to', BP_Messages_Thread::get_recipient_links($messages_template->thread->recipients ) );
 	}
 
-function bp_message_thread_view_link() {
-	echo bp_get_message_thread_view_link();
+function bp_message_thread_view_link( $thread_id = 0 ) {
+	echo bp_get_message_thread_view_link( $thread_id );
 }
-	function bp_get_message_thread_view_link() {
-		global $messages_template, $bp;
-		return apply_filters( 'bp_get_message_thread_view_link', trailingslashit( bp_loggedin_user_domain() . $bp->messages->slug . '/view/' . $messages_template->thread->thread_id ) );
+	function bp_get_message_thread_view_link( $thread_id = 0 ) {
+		global $messages_template;
+
+		if ( empty( $messages_template ) && (int) $thread_id > 0 ) {
+			$thread_id = (int) $thread_id;
+		} else {
+			$thread_id = $messages_template->thread->thread_id;
+		}
+
+		return apply_filters( 'bp_get_message_thread_view_link', trailingslashit( bp_loggedin_user_domain() . buddypress()->messages->slug . '/view/' . $thread_id ) );
 	}
 
 function bp_message_thread_delete_link() {
