/** * Alter a queued email when it is dequeued and about to be sent. * * This hook is largely equivalent to hook_mail_alter(), which will have already * been called for this email, but as sending can be delayed for some time, if * you need to do specific things just before the email is actually sent, you * can use this hook. * * @param $message * An array containing the message data. Keys in this array include: * - 'id': * The drupal_mail() id of the message. Look at module source code or * drupal_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. * - 'from': * The address the message will be marked as being from, which is * either a custom address or the site-wide default email address. * - 'subject': * Subject of the email to be sent. This must not contain any newline * characters, or the email may not be sent properly. * - 'body': * An array of strings containing the message text. The message body is * created by concatenating the individual array strings into a single text * string using "\n\n" as a separator. * - 'headers': * Associative array containing mail headers, such as From, Sender, * MIME-Version, Content-Type, etc. * - 'params': * An array of optional parameters supplied by the caller of drupal_mail() * that is used to build the message before hook_mail_alter() is invoked. * - 'language': * The language object used to build the message before hook_mail_alter() * is invoked. * - 'send': * Set to FALSE to abort sending this email message. * * @see hook_mail_alter() */ function hook_queue_mail_send_alter(&$message) { if ($message['id'] == 'modulename_messagekey') { if (!example_notifications_optin($message['to'], $message['id'])) { // If the recipient has opted to not receive such messages, cancel // sending. $message['send'] = FALSE; return; } $message['body'][] = "--\nMail sent out from " . variable_get('site_name', t('Drupal')); } }
/** * Alter an email message created with MailManagerInterface->mail(). * * hook_mail_alter() allows modification of email messages created and sent * with MailManagerInterface->mail(). Usage examples include adding and/or * changing message text, message fields, and message headers. * * Email messages sent using functions other than MailManagerInterface->mail() * will not invoke hook_mail_alter(). For example, a contributed module directly * calling the MailInterface->mail() or PHP mail() function will not invoke * this hook. All core modules use MailManagerInterface->mail() for messaging, * it is best practice but not mandatory in contributed modules. * * @param $message * An array containing the message data. Keys in this array include: * - 'id': * The MailManagerInterface->mail() id of the message. 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. * - 'from': * The address the message will be marked as being from, which is * either a custom address or the site-wide default email address. * - 'subject': * Subject of the email to be sent. This must not contain any newline * characters, or the email may not be sent properly. * - 'body': * An array of strings or objects that implement * \Drupal\Component\Render\MarkupInterface containing the message text. The * message body is created by concatenating the individual array strings * into a single text string using "\n\n" as a separator. * - 'headers': * Associative array containing mail headers, such as From, Sender, * MIME-Version, Content-Type, etc. * - 'params': * An array of optional parameters supplied by the caller of * MailManagerInterface->mail() that is used to build the message before * hook_mail_alter() is invoked. * - 'language': * The language object used to build the message before hook_mail_alter() * is invoked. * - 'send': * Set to FALSE to abort sending this email message. * * @see \Drupal\Core\Mail\MailManagerInterface::mail() */ function hook_mail_alter(&$message) { if ($message['id'] == 'modulename_messagekey') { if (!example_notifications_optin($message['to'], $message['id'])) { // If the recipient has opted to not receive such messages, cancel // sending. $message['send'] = FALSE; return; } $message['body'][] = "--\nMail sent out from " . \Drupal::config('system.site')->get('name'); } }