8.5.x user.module _user_mail_notify($op, $account, $langcode = NULL)
8.0.x user.module _user_mail_notify($op, $account, $langcode = NULL)
8.1.x user.module _user_mail_notify($op, $account, $langcode = NULL)
8.2.x user.module _user_mail_notify($op, $account, $langcode = NULL)
8.3.x user.module _user_mail_notify($op, $account, $langcode = NULL)
8.4.x user.module _user_mail_notify($op, $account, $langcode = NULL)
8.6.x user.module _user_mail_notify($op, $account, $langcode = NULL)
6.x user.module _user_mail_notify($op, $account, $language = NULL)
7.x user.module _user_mail_notify($op, $account, $language = NULL)

Conditionally create and send a notification email when a certain operation happens on the given user account.


string $op: The operation being performed on the account. Possible values:

  • 'register_admin_created': Welcome message for user created by the admin.
  • 'register_no_approval_required': Welcome message when user self-registers.
  • 'register_pending_approval': Welcome message, user pending admin approval.
  • 'password_reset': Password recovery request.
  • 'status_activated': Account activated.
  • 'status_blocked': Account blocked.
  • 'cancel_confirm': Account cancellation request.
  • 'status_canceled': Account canceled.

\Drupal\Core\Session\AccountInterface $account: The user object of the account being notified. Must contain at least the fields 'uid', 'name', and 'mail'.

string $langcode: (optional) Language code to use for the notification, overriding account language.

Return value

array An array containing various information about the message. See \Drupal\Core\Mail\MailManagerInterface::mail() for details.

See also


4 calls to _user_mail_notify()
User::postSave in core/modules/user/src/Entity/User.php
Acts on a saved entity before the insert or update hook is invoked.
UserMailNotifyTest::testUserMailsNotSent in core/modules/user/src/Tests/UserMailNotifyTest.php
Tests mails are not sent when notify.$op is FALSE.
UserMailNotifyTest::testUserMailsSent in core/modules/user/src/Tests/UserMailNotifyTest.php
Tests mails are sent when notify.$op is TRUE.
UserPasswordForm::submitForm in core/modules/user/src/Form/UserPasswordForm.php
Form submission handler.


core/modules/user/user.module, line 1199
Enables the user registration and login system.


function _user_mail_notify($op, $account, $langcode = NULL) {
  if (\Drupal::config('user.settings')
    ->get('notify.' . $op)) {
    $params['account'] = $account;
    $langcode = $langcode ? $langcode : $account

    // Get the custom site notification email to use as the from email address
    // if it has been set.
    $site_mail = \Drupal::config('system.site')

    // If the custom site notification email has not been set, we use the site
    // default for this.
    if (empty($site_mail)) {
      $site_mail = \Drupal::config('system.site')
    if (empty($site_mail)) {
      $site_mail = ini_get('sendmail_from');
    $mail = \Drupal::service('plugin.manager.mail')
      ->mail('user', $op, $account
      ->getEmail(), $langcode, $params, $site_mail);
    if ($op == 'register_pending_approval') {

      // If a user registered requiring admin approval, notify the admin, too.
      // We use the site default language for this.
        ->mail('user', 'register_pending_approval_admin', $site_mail, \Drupal::languageManager()
        ->getId(), $params);
  return empty($mail) ? NULL : $mail['result'];