/** * Implements hook_mail(). */ function {{ machine_name }}_mail($key, &$message, $params) { $account = $params['account']; $context = $params['context']; $variables = [ '%site_name' => \Drupal::config('system.site')->get('name'), '%username' => $account->getDisplayName(), ]; if ($context['hook'] == 'taxonomy') { $entity = $params['entity']; $vocabulary = Vocabulary::load($entity->id()); $variables += [ '%term_name' => $entity->name, '%term_description' => $entity->description, '%term_id' => $entity->id(), '%vocabulary_name' => $vocabulary->label(), '%vocabulary_description' => $vocabulary->getDescription(), '%vocabulary_id' => $vocabulary->id(), ]; } // Node-based variable translation is only available if we have a node. if (isset($params['node'])) { /** @var \Drupal\node\NodeInterface $node */ $node = $params['node']; $variables += [ '%uid' => $node->getOwnerId(), '%url' => $node->toUrl('canonical', ['absolute' => TRUE])->toString(), '%node_type' => node_get_type_label($node), '%title' => $node->getTitle(), '%teaser' => $node->teaser, '%body' => $node->body, ]; } $subject = strtr($context['subject'], $variables); $body = strtr($context['message'], $variables); $message['subject'] .= str_replace(["\r", "\n"], '', $subject); $message['body'][] = MailFormatHelper::htmlToText($body); }