หากคุณต้องการเขียนโค้ดด้วยตนเอง นี่คือตัวอย่างง่ายๆ ในการส่งอีเมลแจ้งเตือนทุกครั้ง ก ความคิดเห็น มีการโพสต์เอนทิตี (นำมาจากไซต์จริงที่มีการล้างข้อมูลเล็กน้อย แต่ฉันอาจมีบางอย่างที่ดึงรหัสเฉพาะไซต์ออกมา):
ฟังก์ชัน mymodule_comment_insert (ความคิดเห็น $entity) {
mymodule__mail_notify_admin('new_comment', $entity, '', 'insert');
}
ฟังก์ชัน mymodule_mail_notify_admin($key, $entity, $title, $moderation_state) {
$mailManager = \Drupal::service('plugin.manager.mail');
$module = 'โมดูลของฉัน';
$to_email = '[email protected]';
$path = $entity->toUrl('canonical', ['absolute' => TRUE])->toString();
$params['message'] = $เส้นทาง;
$params['title'] = $title;
$params['moderation_state'] = $moderation_state;
$langcode = \Drupal::currentUser()->getPreferredLangcode();
$result = $mailManager->mail($module, $key, $to_email, $langcode, $params);
ถ้า ($result['result'] !== TRUE) {
$message = t('เกิดข้อผิดพลาดในการส่งอีเมลแจ้งไปที่ @email.', ['@email' => $to_email]);
\Drupal::logger('mymodule')->error($message);
กลับ;
}
อื่น {
$message = t('ส่งอีเมล์แจ้งเตือนไปที่ @email', ['@email' => $to_email]);
\Drupal::logger('mymodule')->notice($message);
}
}
/*
* สำหรับการอ้างอิง:
* http://valuebound.com/resources/blog/how-to-send-mail-programmatically-drupal-8
*/
ฟังก์ชัน mymodule_mail($key, &$message, $params) {
$message['จาก'] = \Drupal::config('system.site')->get('mail');
สวิตช์ (คีย์ $) {
กรณี 'new_comment':
// https://www.drupal.org/project/simple_comment_email_notification
$message['subject'] = t('ความคิดเห็นใหม่');
$message['body'][] = t('คุณสามารถตรวจสอบเพจได้ที่ :unapprovedCommentsUrl สำหรับความคิดเห็นที่ไม่ผ่านการอนุมัติ และ :publishedCommentsUrl สำหรับความคิดเห็นที่เผยแพร่แล้ว', [
':unapprovedCommentsUrl' => \Drupal::request()->getSchemeAndHttpHost() '/admin/content/comment/approval',
':publishedCommentsUrl' => \Drupal::request()->getSchemeAndHttpHost() '/ผู้ดูแลระบบ/เนื้อหา/ความคิดเห็น',
]);
หยุดพัก;
ค่าเริ่มต้น:
ตัวเลือก $ = [
'langcode' => $message['langcode'],
];
// @todo แก้ไขการหลบหนี HTML
// $message['body'][] = Html::escape($params['message']);.
$message['body'][] = $params['message'];
$message['subject'] = t('@title @ms บนไซต์ของฉัน',
[
'@ms' => $params['moderation_state'],
'@title' => $params['title'],
]
ตัวเลือก $);
หยุดพัก;
}
}