/** * Implements hook_mail(). */ function app_voucher_mail($key, &$message, $params) { $function = 'app_voucher_mail__' . $key; if (function_exists($function)) { return $function($key, $message, $params); } /* * @I Convert the enrollment email to use the new mail handler * type : improvement * priority : normal * labels : refactoring */ if (!empty($params['from'])) { $message['from'] = $params['from']; } $message['subject'] = $params['subject']; $message['body'][] = $params['body']; } /** * Indirect implementation of hook_mail() for `voucher expiration` emails. */ function app_voucher_mail__voucher_expiration_warning($key, &$message, $params) { $host = \Drupal::request()->getSchemeAndHttpHost(); $message['from'] = \Drupal::config('system.site')->get('mail'); $message['subject'] = t('Your voucher is about to expire'); $link = Url::fromUri('internal:/dashboard/' . $params['uid'] . '/my-vouchers'); $message['body'][] = t('Your voucher is about to expire. Click here to view and manage your list of vouchers . ' . $host . '/dashboard/' . $params["uid"] . '/my-vouchers'); } // Send email to use to remind them of voucher expiring. $mail = $account->getEmail(); $mailManager = \Drupal::service('plugin.manager.mail'); $from = 'jamesbarnett@ipc.org'; $host = \Drupal::request()->getSchemeAndHttpHost(); $params['subject'] = "Your voucher is about to expire"; $params['host'] = $host; $params['uid'] = $account->id(); // Gets the sites default langauge. $language = $account->getPreferredLangcode(); if ($mailManager->mail('app_voucher', 'voucher_expiration_warning', $mail, $language, $params, NULL, TRUE)) { \Drupal::service('messenger') ->addMessage("Reminder email about expired Voucher sent to user: " . $account->getUsername()); } else { \Drupal::service('messenger')->addMesage("Failed to send email."); }
https://www.zyxware.com/articles/5504/drupal-8-how-to-send-a-mail-progr…
shows with just 2 functions