diff --git src/bp-core/bp-core-filters.php src/bp-core/bp-core-filters.php
index 2fe8efa..3e78a43 100644
--- src/bp-core/bp-core-filters.php
+++ src/bp-core/bp-core-filters.php
@@ -464,7 +464,7 @@ function bp_core_activation_signup_blog_notification( $domain, $path, $title, $u
 			'user.email'        => $user_email,
 		),
 	);
-	bp_send_email( 'core-user-registration-with-blog', $user_email, $args );
+	bp_send_email( 'core-user-registration-with-blog', array( array( $user_email => $user ) ), $args );
 
 	// Return false to stop the original WPMU function from continuing.
 	return false;
@@ -519,7 +519,7 @@ function bp_core_activation_signup_user_notification( $user, $user_email, $key,
 			'user.email'   => $user_email,
 		),
 	);
-	bp_send_email( 'core-user-registration', $user_email, $args );
+	bp_send_email( 'core-user-registration', array( array( $user_email => $user ) ), $args );
 
 	// Return false to stop the original WPMU function from continuing.
 	return false;
diff --git src/bp-members/bp-members-functions.php src/bp-members/bp-members-functions.php
index 542fedd..f53f26e 100644
--- src/bp-members/bp-members-functions.php
+++ src/bp-members/bp-members-functions.php
@@ -1839,7 +1839,7 @@ function bp_core_signup_user( $user_login, $user_password, $user_email, $usermet
 		 *                               signup data, xprofile data, etc).
 		 */
 		if ( apply_filters( 'bp_core_signup_send_activation_key', true, $user_id, $user_email, $activation_key, $usermeta ) ) {
-			bp_core_signup_send_validation_email( $user_id, $user_email, $activation_key );
+			bp_core_signup_send_validation_email( $user_id, $user_email, $activation_key, $user_login );
 		}
 	}
 
@@ -2199,11 +2199,14 @@ function bp_core_signup_avatar_upload_dir() {
 /**
  * Send activation email to a newly registered user.
  *
- * @param int    $user_id    ID of the new user.
- * @param string $user_email Email address of the new user.
- * @param string $key        Activation key.
+ * @since  2.5.0 Add the $user_login parameter.
+ *
+ * @param int|bool $user_id    ID of the new user, false if BP_SIGNUPS_SKIP_USER_CREATION is true.
+ * @param string   $user_email Email address of the new user.
+ * @param string   $key        Activation key.
+ * @param string   $user_login The user login.
  */
-function bp_core_signup_send_validation_email( $user_id, $user_email, $key ) {
+function bp_core_signup_send_validation_email( $user_id, $user_email, $key, $user_login = '' ) {
 	$args = array(
 		'tokens' => array(
 			'activate.url' => esc_url( trailingslashit( bp_get_activation_page() ) . "{$key}/" ),
@@ -2213,7 +2216,13 @@ function bp_core_signup_send_validation_email( $user_id, $user_email, $key ) {
 			'user.id'      => $user_id,
 		),
 	);
-	bp_send_email( 'core-user-registration', $user_id, $args );
+
+	if ( empty( $user_id ) ) {
+		$to = array( array( $user_email => $user_login ) );
+	} else {
+		$to = $user_id;
+	}
+	bp_send_email( 'core-user-registration', $to, $args );
 }
 
 /**
diff --git src/bp-members/classes/class-bp-signup.php src/bp-members/classes/class-bp-signup.php
index 6f38d4f..4113fe8 100644
--- src/bp-members/classes/class-bp-signup.php
+++ src/bp-members/classes/class-bp-signup.php
@@ -586,7 +586,7 @@ class BP_Signup {
 
 				// Send the validation email.
 				} else {
-					bp_core_signup_send_validation_email( false, $signup->user_email, $signup->activation_key );
+					bp_core_signup_send_validation_email( false, $signup->user_email, $signup->activation_key, $signup->user_login );
 				}
 			}
 
diff --git tests/phpunit/testcases/core/functions.php tests/phpunit/testcases/core/functions.php
index c541c02..cab801e 100644
--- tests/phpunit/testcases/core/functions.php
+++ tests/phpunit/testcases/core/functions.php
@@ -721,4 +721,79 @@ class BP_Tests_Core_Functions extends BP_UnitTestCase {
 		$result      = bp_email_add_link_color_to_template( $content, 'template', 'add-content' );
 		$this->assertContains( $link_color, $result );
 	}
+
+	/**
+	 * @group bp_core_signup_send_validation_email
+	 * @group bp_core_activation_signup_user_notification
+	 * @group bp_core_activation_signup_blog_notification
+	 */
+	public function test_send_account_validation_email() {
+		$this->signup_to = array();
+		$old_user = get_current_user_id();
+		$this->email = false;
+
+		$email_type = get_term_by( 'slug', 'core-user-registration', bp_get_email_tax_type() );
+
+		$this->set_current_user( 1 );
+
+		// Signup
+		$this->factory->post->create( array(
+			'post_type' => bp_get_email_post_type(),
+			'post_content' => 'hi {{recipient.name}}',
+			'tax_input' => array(
+				bp_get_email_tax_type() => array( $email_type->term_id )
+			),
+		) );
+
+		if ( is_multisite() ) {
+			$email_type = get_term_by( 'slug', 'core-user-registration-with-blog', bp_get_email_tax_type() );
+
+			// Signup with blog
+			$this->factory->post->create( array(
+				'post_type' => bp_get_email_post_type(),
+				'post_content' => 'hi {{recipient.name}}',
+				'tax_input' => array(
+					bp_get_email_tax_type() => array( $email_type->term_id )
+				),
+			) );
+		}
+
+		$this->set_current_user( $old_user );
+
+		add_filter( 'bp_email_set_to', array( $this, 'catch_email_and_name' ), 10, 1 );
+
+		if ( is_multisite() ) {
+			bp_core_signup_user( 'foologin', 'foopass', 'foo@bar.com', array() );
+			$this->assertTrue( (bool) is_email( key( $this->signup_to ) ) );
+			$this->assertTrue( 'foologin' === $this->signup_to['foo@bar.com'], 'Hi User Login is missing.' );
+
+			$this->signup_to = array();
+
+			bp_core_signup_blog( 'bar', '/', 'Bar', 'barlogin', 'bar@foo.com', array() );
+			$this->assertTrue( (bool) is_email( key( $this->signup_to ) ) );
+			$this->assertTrue( 'barlogin' === $this->signup_to['bar@foo.com'], 'Hi User Login is missing.' );
+
+		} else {
+			bp_core_signup_user( 'foologin', 'foopass', 'foo@bar.com', array() );
+			$this->assertTrue( (bool) is_email( key( $this->signup_to ) ) );
+			$this->assertTrue( 'foologin' === $this->signup_to['foo@bar.com'], 'Hi User Login is missing.' );
+
+			$this->signup_to = array();
+
+			define( 'BP_SIGNUPS_SKIP_USER_CREATION', true );
+
+			bp_core_signup_user( 'barlogin', 'barpass', 'bar@foo.com', array() );
+			$this->assertTrue( (bool) is_email( key( $this->signup_to ) ), 'When BP_SIGNUPS_SKIP_USER_CREATION is true, the User is not created so we need to use the user_email to send the email.' );
+			$this->assertTrue( 'barlogin' === $this->signup_to['bar@foo.com'], 'Hi User Login is missing.' );
+		}
+
+		remove_filter( 'bp_email_set_to', array( $this, 'catch_email_and_name' ), 10, 1 );
+	}
+
+	public function catch_email_and_name( $to ) {
+		$recipient = array_shift( $to );
+		$this->signup_to = array( $recipient->get_address() => $recipient->get_name() );
+
+		return $to;
+	}
 }
