diff --git a/core/modules/user/lib/Drupal/user/AccountFormController.php b/core/modules/user/lib/Drupal/user/AccountFormController.php
index a5545f4..bf796e7 100644
--- a/core/modules/user/lib/Drupal/user/AccountFormController.php
+++ b/core/modules/user/lib/Drupal/user/AccountFormController.php
@@ -47,12 +47,12 @@ public function form(array $form, array &$form_state, EntityInterface $account)
 
     // The mail field is NOT required if account originally had no mail set
     // and the user performing the edit has 'administer users' permission.
-    // This allows users without e-mail address to be edited and deleted.
+    // This allows users without e-mail address to be edited.
     $form['account']['mail'] = array(
       '#type' => 'email',
       '#title' => t('E-mail address'),
       '#description' => t('A valid e-mail address. All e-mails from the system will be sent to this address. The e-mail address is not made public and will only be used if you wish to receive a new password or wish to receive certain news or notifications by e-mail.'),
-      '#required' => !(empty($account->mail) && user_access('administer users')),
+      '#required' => !(!empty($account->uid) && empty($account->mail) && user_access('administer users')),
       '#default_value' => (!$register ? $account->mail : ''),
       '#attributes' => array('autocomplete' => 'off'),
     );
diff --git a/core/modules/user/lib/Drupal/user/ProfileFormController.php b/core/modules/user/lib/Drupal/user/ProfileFormController.php
index d2a7e81..d259f48 100644
--- a/core/modules/user/lib/Drupal/user/ProfileFormController.php
+++ b/core/modules/user/lib/Drupal/user/ProfileFormController.php
@@ -25,11 +25,14 @@ protected function actions(array $form, array &$form_state) {
     // should alter it instead of providing a new one.
     unset($element['delete']);
 
+    // Use #limit_validation_errors to allow an account to be canceled even if
+    // some fields are blank on the account form.
     $element['cancel'] = array(
       '#type' => 'submit',
       '#value' => t('Cancel account'),
       '#submit' => array('user_edit_cancel_submit'),
       '#access' => $account->uid > 1 && (($account->uid == $GLOBALS['user']->uid && user_access('cancel account')) || user_access('administer users')),
+      '#limit_validation_errors' => array(array('uid')),
     );
 
     return $element;
diff --git a/core/modules/user/lib/Drupal/user/RegisterFormController.php b/core/modules/user/lib/Drupal/user/RegisterFormController.php
index 6e4a260..81958a0 100644
--- a/core/modules/user/lib/Drupal/user/RegisterFormController.php
+++ b/core/modules/user/lib/Drupal/user/RegisterFormController.php
@@ -130,19 +130,14 @@ public function save(array $form, array &$form_state) {
     }
     // No administrator approval required.
     elseif ($account->status || $notify) {
-      if (empty($account->mail) && $notify) {
-        drupal_set_message(t('The new user <a href="@url">%name</a> was created without an email address, so no welcome message was sent.', array('@url' => url($uri['path'], $uri['options']), '%name' => $account->name)));
+      $op = $notify ? 'register_admin_created' : 'register_no_approval_required';
+      _user_mail_notify($op, $account);
+      if ($notify) {
+        drupal_set_message(t('A welcome message with further instructions has been e-mailed to the new user <a href="@url">%name</a>.', array('@url' => url($uri['path'], $uri['options']), '%name' => $account->name)));
       }
       else {
-        $op = $notify ? 'register_admin_created' : 'register_no_approval_required';
-        _user_mail_notify($op, $account);
-        if ($notify) {
-          drupal_set_message(t('A welcome message with further instructions has been e-mailed to the new user <a href="@url">%name</a>.', array('@url' => url($uri['path'], $uri['options']), '%name' => $account->name)));
-        }
-        else {
-          drupal_set_message(t('A welcome message with further instructions has been sent to your e-mail address.'));
-          $form_state['redirect'] = '';
-        }
+        drupal_set_message(t('A welcome message with further instructions has been sent to your e-mail address.'));
+        $form_state['redirect'] = '';
       }
     }
     // Administrator approval required.
