Dacă doriți să îl codificați singur, iată un exemplu simplu pentru a trimite o notificare prin e-mail de fiecare dată când a cometariu entitatea este postată (luat de pe un site real cu o curățare minoră, dar s-ar putea să fi rupt ceva scoțând codul specific site-ului):
function mymodule_comment_insert(Comentariu $entity) {
mymodule__mail_notify_admin('noul_comment', $entity, '', 'inserat');
}
funcția mymodule_mail_notify_admin($key, $entity, $title, $moderation_state) {
$mailManager = \Drupal::service('plugin.manager.mail');
$modul = 'modul meu';
$to_email = '[email protected]';
$cale = $entity->toUrl('canonical', ['absolute' => TRUE])->toString();
$params['mesaj'] = $cale;
$params['titlu'] = $titlu;
$params['moderation_state'] = $moderation_state;
$langcode = \Drupal::currentUser()->getPreferredLangcode();
$rezultat = $mailManager->mail($modul, $key, $to_email, $langcode, $params);
dacă ($rezultat['rezultat'] !== TRUE) {
$message = t('Eroare la trimiterea notificării prin e-mail către @email.', ['@email' => $to_email]);
\Drupal::logger('mymodule')->error($mesaj);
întoarcere;
}
else {
$message = t('Notificare prin e-mail trimisă la @email', ['@email' => $to_email]);
\Drupal::logger('mymodule')->notice($mesaj);
}
}
/*
* Pentru trimitere:
* http://valuebound.com/resources/blog/how-to-send-mail-programmatically-drupal-8
*/
funcția mymodule_mail($cheie, &$mesaj, $params) {
$message['de la'] = \Drupal::config('system.site')->get('mail');
comutator ($key) {
caz „new_comment”:
// https://www.drupal.org/project/simple_comment_email_notification
$message['subject'] = t('Comentariu nou');
$message['body'][] = t('Puteți verifica pagina la :unapprovedCommentsUrl pentru comentarii neaprobate și :publishedCommentsUrl pentru comentarii publicate.', [
':unapprovedCommentsUrl' => \Drupal::request()->getSchemeAndHttpHost() . „/admin/content/comment/approval”,
':publishedCommentsUrl' => \Drupal::request()->getSchemeAndHttpHost() . „/admin/content/comment”,
]);
pauză;
Mod implicit:
$opțiuni = [
'langcode' => $message['langcode'],
];
// @todo Remediați evadarea HTML.
// $message['body'][] = Html::escape($params['message']);.
$message['body'][] = $params['mesaj'];
$message['subject'] = t('@title @ms pe site-ul meu',
[
'@ms' => $params['moderation_state'],
'@title' => $params['titlu'],
],
$opțiuni);
pauză;
}
}