Nếu bạn muốn tự viết mã, đây là một ví dụ đơn giản để gửi thông báo qua email mỗi khi Bình luận thực thể được đăng (được lấy từ một trang web thực tế với việc dọn dẹp nhỏ, nhưng tôi có thể đã làm hỏng thứ gì đó khi lấy mã dành riêng cho trang web):
function mymodule_comment_insert(Comment $entity) {
mymodule__mail_notify_admin('new_comment', $entity, '', 'insert');
}
function mymodule_mail_notify_admin($key, $entity, $title, $moderation_state) {
$mailManager = \Drupal::service('plugin.manager.mail');
$mô-đun = 'mô-đun của tôi';
$to_email = '[email protected]';
$path = $entity->toUrl('canonical', ['absolute' => TRUE])->toString();
$params['message'] = $path;
$params['title'] = $title;
$params['moderation_state'] = $moderation_state;
$langcode = \Drupal::currentUser()->getPreferredLangcode();
$result = $mailManager->mail($module, $key, $to_email, $langcode, $params);
if ($result['result'] !== TRUE) {
$message = t('Lỗi khi gửi thông báo qua email tới @email.', ['@email' => $to_email]);
\Drupal::logger('mymodule')->error($message);
trở lại;
}
khác {
$message = t('Email thông báo đã được gửi tới @email', ['@email' => $to_email]);
\Drupal::logger('mymodule')->notice($message);
}
}
/*
* Để tham khảo:
* http://valuebound.com/resources/blog/how-to-send-mail-programmatically-drupal-8
*/
function mymodule_mail($key, &$message, $params) {
$message['from'] = \Drupal::config('system.site')->get('mail');
công tắc ($key) {
trường hợp 'new_comment':
// https://www.drupal.org/project/simple_comment_email_notification
$message['subject'] = t('Bình luận mới');
$message['body'][] = t('Bạn có thể kiểm tra trang tại :unapprovedCommentsUrl để biết các nhận xét chưa được phê duyệt và :publishedCommentsUrl để biết các nhận xét đã xuất bản.', [
':unapprovedCommentsUrl' => \Drupal::request()->getSchemeAndHttpHost() . '/quản trị/nội dung/bình luận/phê duyệt',
':publishedCommentsUrl' => \Drupal::request()->getSchemeAndHttpHost() . '/admin/nội dung/bình luận',
]);
nghỉ;
mặc định:
tùy chọn $ = [
'langcode' => $message['langcode'],
];
// @todo Sửa lỗi thoát HTML.
// $message['body'][] = Html::escape($params['message']);.
$message['body'][] = $params['message'];
$message['subject'] = t('@title @ms trên trang web của tôi',
[
'@ms' => $params['moderation_state'],
'@title' => $params['title'],
],
tùy chọn $);
nghỉ;
}
}