diff --git src/bp-core/bp-core-caps.php src/bp-core/bp-core-caps.php
index 7d1d00482..24273eb2a 100644
--- src/bp-core/bp-core-caps.php
+++ src/bp-core/bp-core-caps.php
@@ -375,9 +375,10 @@ function bp_user_can( $user_id, $capability, $args = array() ) {
  * @return array $allcaps The user's cap list, with 'bp_moderate' appended, if relevant.
  */
 function _bp_enforce_bp_moderate_cap_for_admins( $caps = array(), $cap = '', $user_id = 0, $args = array() ) {
+	$admin_caps = bp_get_caps_for_role( 'administrator' );
 
 	// Bail if not checking the 'bp_moderate' cap.
-	if ( 'bp_moderate' !== $cap ) {
+	if ( ! in_array( $cap, $admin_caps, true ) ) {
 		return $caps;
 	}
 
diff --git src/bp-core/bp-core-filters.php src/bp-core/bp-core-filters.php
index ec84a6990..65d97834c 100644
--- src/bp-core/bp-core-filters.php
+++ src/bp-core/bp-core-filters.php
@@ -58,6 +58,7 @@ add_filter( 'bp_email_set_content_html', 'wp_filter_post_kses', 6 );
 add_filter( 'bp_email_set_content_html', 'stripslashes', 8 );
 add_filter( 'bp_email_set_content_plaintext', 'wp_strip_all_tags', 6 );
 add_filter( 'bp_email_set_subject', 'sanitize_text_field', 6 );
+add_filter( 'bp_get_caps_for_role', 'bp_email_set_caps_for_role', 10, 2 );
 
 /**
  * Template Compatibility.
diff --git src/bp-core/bp-core-functions.php src/bp-core/bp-core-functions.php
index c1481135e..62fbd3d40 100644
--- src/bp-core/bp-core-functions.php
+++ src/bp-core/bp-core-functions.php
@@ -3861,6 +3861,32 @@ function bp_email_get_unsubscribe_type_schema() {
 	return (array) apply_filters( 'bp_email_get_unsubscribe_type_schema', $emails );
 }
 
+/**
+ * Sets the role's BP Email capabilities.
+ *
+ * @since 7.0.0
+ *
+ * @param array  $caps Array of capabilities to return.
+ * @param string $role The role currently being requested.
+ * @return array The role BP Email caps.
+ */
+function bp_email_set_caps_for_role( $caps = array(), $role = '' ) {
+	$bp_email_post_type = get_post_type_object( bp_get_email_post_type() );
+
+	if ( $bp_email_post_type ) {
+		$bp_email_post_type_caps = get_object_vars( $bp_email_post_type->cap );
+
+		if ( 'administrator' === $role ) {
+			$caps = array_merge(
+				$caps,
+				array_values( $bp_email_post_type_caps )
+			);
+		}
+	}
+
+	return $caps;
+}
+
 /**
  * Get BuddyPress content allowed tags.
  *
diff --git src/bp-core/classes/class-bp-core.php src/bp-core/classes/class-bp-core.php
index 7a322133a..0ca0e16e1 100644
--- src/bp-core/classes/class-bp-core.php
+++ src/bp-core/classes/class-bp-core.php
@@ -306,15 +306,7 @@ class BP_Core extends BP_Component {
 				bp_get_email_post_type(),
 				apply_filters( 'bp_register_email_post_type', array(
 					'description'       => _x( 'BuddyPress emails', 'email post type description', 'buddypress' ),
-					'capabilities'      => array(
-						'edit_posts'          => 'bp_moderate',
-						'edit_others_posts'   => 'bp_moderate',
-						'publish_posts'       => 'bp_moderate',
-						'read_private_posts'  => 'bp_moderate',
-						'delete_posts'        => 'bp_moderate',
-						'delete_others_posts' => 'bp_moderate',
-					),
-					'map_meta_cap'      => true,
+					'capability_type'   => 'bp_email',
 					'labels'            => bp_get_email_post_type_labels(),
 					'menu_icon'         => 'dashicons-email',
 					'public'            => false,
