Same name and namespace in other branches
  1. 6.x modules/update/update.module \update_mail()
  2. 7.x modules/update/update.module \update_mail()
  3. 8.9.x core/modules/update/update.module \update_mail()
  4. 9 core/modules/update/update.module \update_mail()

Implements hook_mail().

Constructs the email notification message when the site is out of date.

See also

\Drupal\Core\Mail\MailManagerInterface::mail()

_update_cron_notify()

_update_message_text()

\Drupal\update\UpdateManagerInterface

1 call to update_mail()
UpdateMailTest::testUpdateEmail in core/modules/update/tests/src/Unit/UpdateMailTest.php
Test the subject and body of update text.

File

core/modules/update/update.module, line 392
Handles updates of Drupal core and contributed projects.

Code

function update_mail($key, &$message, $params) {
  $langcode = $message['langcode'];
  $language = \Drupal::languageManager()
    ->getLanguage($langcode);
  $message['subject'] .= t('New release(s) available for @site_name', [
    '@site_name' => \Drupal::config('system.site')
      ->get('name'),
  ], [
    'langcode' => $langcode,
  ]);
  foreach ($params as $msg_type => $msg_reason) {
    $message['body'][] = _update_message_text($msg_type, $msg_reason, $langcode);
  }
  $message['body'][] = t('See the available updates page for more information:', [], [
    'langcode' => $langcode,
  ]) . "\n" . Url::fromRoute('update.status', [], [
    'absolute' => TRUE,
    'language' => $language,
  ])
    ->toString();
  if (_update_manager_access()) {
    $message['body'][] = t('You can automatically download your missing updates using the Update manager:', [], [
      'langcode' => $langcode,
    ]) . "\n" . Url::fromRoute('update.report_update', [], [
      'absolute' => TRUE,
      'language' => $language,
    ])
      ->toString();
  }
  $settings_url = Url::fromRoute('update.settings', [], [
    'absolute' => TRUE,
  ])
    ->toString();
  if (\Drupal::config('update.settings')
    ->get('notification.threshold') == 'all') {
    $message['body'][] = t('Your site is currently configured to send these emails when any updates are available. To get notified only for security updates, @url.', [
      '@url' => $settings_url,
    ]);
  }
  else {
    $message['body'][] = t('Your site is currently configured to send these emails only when security updates are available. To get notified for any available updates, @url.', [
      '@url' => $settings_url,
    ]);
  }
}