hook_mail($key, &$message, $params)
Prepares a message based on parameters;
This hook is called from MailManagerInterface->mail(). Note that hook_mail(), unlike hook_mail_alter(), is only called on the $module argument to MailManagerInterface->mail(), not all modules.
Parameters
$key: An identifier of the mail.
$message: An array to be filled in. Elements in this array include:
- id: An ID to identify the mail sent. Look at module source code or MailManagerInterface->mail() for possible id values.
- to: The address or addresses the message will be sent to. The formatting of this string must comply with RFC 2822.
- subject: Subject of the email to be sent. This must not contain any newline characters, or the mail may not be sent properly. MailManagerInterface->mail() sets this to an empty string when the hook is invoked.
- body: An array of lines containing the message to be sent. Drupal will format the correct line endings for you. MailManagerInterface->mail() sets this to an empty array when the hook is invoked. The array may contain either strings or objects implementing \Drupal\Component\Render\MarkupInterface.
- from: The address the message will be marked as being from, which is set by MailManagerInterface->mail() to either a custom address or the site-wide default email address when the hook is invoked.
- headers: Associative array containing mail headers, such as From, Sender, MIME-Version, Content-Type, etc. MailManagerInterface->mail() pre-fills several headers in this array.
$params: An array of parameters supplied by the caller of MailManagerInterface->mail().
See also
\Drupal\Core\Mail\MailManagerInterface::mail()
Related topics
- Hooks
- Define functions that alter the behavior of Drupal core.
File
- core/core.api.php, line 2056
- Documentation landing page and topics, plus core library hooks.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | function hook_mail( $key , & $message , $params ) { $account = $params [ 'account' ]; $context = $params [ 'context' ]; $variables = array ( '%site_name' => \Drupal::config( 'system.site' )->get( 'name' ), '%username' => $account ->getDisplayName(), ); if ( $context [ 'hook' ] == 'taxonomy' ) { $entity = $params [ 'entity' ]; $vocabulary = Vocabulary::load( $entity ->id()); $variables += array ( '%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 += array ( '%uid' => $node ->getOwnerId(), '%url' => $node ->url( 'canonical' , array ( 'absolute' => TRUE)), '%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 ( array ( "\r" , "\n" ), '' , $subject ); $message [ 'body' ][] = MailFormatHelper::htmlToText( $body ); } |
Please login to continue.