diff --git a/core/modules/user/lib/Drupal/user/ProfileFormController.php b/core/modules/user/lib/Drupal/user/ProfileFormController.php
index ee4f8c3..a8537f9 100644
--- a/core/modules/user/lib/Drupal/user/ProfileFormController.php
+++ b/core/modules/user/lib/Drupal/user/ProfileFormController.php
@@ -25,12 +25,22 @@ protected function actions(array $form, array &$form_state) {
     // The user account being edited.
     $account = $this->entity;
 
+    $this->user = \Drupal::currentUser();
+
+    $normal_user = $account->id() > 1;
+    $cancel_own = ($account->id() == $this->user->id()) && $this->user->hasPermission('cancel account');
+
     // The user doing the editing.
     $user = $this->currentUser();
     $element['delete']['#type'] = 'submit';
     $element['delete']['#value'] = $this->t('Cancel account');
     $element['delete']['#submit'] = array(array($this, 'editCancelSubmit'));
-    $element['delete']['#access'] = $account->id() > 1 && (($account->id() == $user->id() && $user->hasPermission('cancel account')) || $user->hasPermission('administer users'));
+    $element['delete']['#access'] = $normal_user && ($cancel_own || $this->user->hasPermission('administer users'));
+
+    $element['resend']['#type'] = 'submit';
+    $element['resend']['#value'] = t('Re-send welcome message');
+    $element['resend']['#submit'] = array(array($this, 'editResendSubmit'));
+    $element['resend']['#access'] = $normal_user && $account->getEmail() && $this->user->hasPermission('administer users');
 
     return $element;
   }
@@ -64,4 +74,39 @@ public function editCancelSubmit($form, &$form_state) {
     $form_state['redirect'] = array('user/' . $this->entity->id() . '/cancel', array('query' => $destination));
   }
 
+  /**
+   * Provides a submit handler for the 'Re-send welcome message' button.
+   */
+  public function editResendSubmit($form, &$form_state) {
+    global $language;
+
+    $account = $this->entity;
+
+    // Determine the user approval method.
+    $config = \Drupal::getContainer()->get('config.factory')->get('user.settings');
+    switch ($config->get('register')) {
+      case USER_REGISTER_ADMINISTRATORS_ONLY:
+        $op = 'register_admin_created';
+        break;
+      case USER_REGISTER_VISITORS:
+        $op = 'register_no_approval_required';
+        break;
+      case USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL:
+      default:
+        $op = 'register_pending_approval';
+    }
+
+    // Notify the user via email.
+    $mail = _user_mail_notify($op, $account, $language);
+
+    // Log the mail.
+    if (!empty($mail)) {
+      watchdog('user', 'Welcome message has been re-sent to %name at %email.', array('%name' => $account->getUsername(), '%email' => $account->getEmail()));
+      drupal_set_message(t('Welcome message has been re-sent to %name at %email', array('%name' => $account->getUsername(), '%email' => $account->getEmail())));
+    }
+    else {
+      watchdog('user', 'There was an error re-sending welcome message to %name at %email', array('%name' => $account->getUsername(), '%email' => $account->getEmail()));
+      drupal_set_message(t('There was an error re-sending welcome message to %name at %email', array('%name' => $account->getUsername(), '%email' => $account->getEmail())), 'error');
+    }
+  }
 }
diff --git a/core/modules/user/lib/Drupal/user/Tests/UserAdminTest.php b/core/modules/user/lib/Drupal/user/Tests/UserAdminTest.php
index 1f28492..e01bf12 100644
--- a/core/modules/user/lib/Drupal/user/Tests/UserAdminTest.php
+++ b/core/modules/user/lib/Drupal/user/Tests/UserAdminTest.php
@@ -164,4 +164,19 @@ function testNotificationEmailAddress() {
     ));
     $this->assertTrue(count($user_mail), 'New user mail to user is sent from configured Notification E-mail address');
   }
+
+  /**
+   * Tests the resending of an e-mail notification.
+   */
+  function testResendEmailNotification() {
+    $admin_user = $this->drupalCreateUser(array('administer users'));
+    $this->drupalLogin($admin_user);
+
+    $test_user = $this->drupalCreateUser();
+    $test_user = user_load($test_user->id());
+    $this->drupalPostForm('user/' . $test_user->id() . '/edit', array('status' => 0), t('Re-send welcome message'));
+
+    $test_user = user_load($test_user->id());
+    $this->assertMail('to', $test_user->getEmail(), 'Activation mail re-sent to user');
+  }
 }
