menu
札幌・東京を拠点にWebコンサルティングをコアにした、Web制作・Webシステム開発会社・アプリ開発会社です。

Drupal8、カスタムモジュールでメールを送る

2017/12/08

こんにちは、やまかみです。

最近当社の開発ではWordPressではなく、Drupal8を使うというということが増えています。

しかし、日本ではあまり浸透していないので、日本語ドキュメントがあまりないというのが悩みどころ。

今回はカスタムモジュールにてメール送信を実装したので、簡単にサンプルをご紹介します。

フックの設定

カスタムモジュールの(モジュール名).moduleにフックを記述


/**
* Implements hook_mail().
*/
function d8mail_mail($key, &$message, $params) {
$options = array(
'langcode' => $message['langcode'],
);

switch ($key) {
case ‘mail_post’:
$message[‘from’] = \Drupal::config(‘system.site’)->get(‘mail’);
$message[‘subject’] = t(‘タイトル’);
$message[‘body’][] = $params;
break;
}
}

コントローラー

コントローラーに記述


function mail(Drupal\Core\Entity\EntityInterface $entity) {

$mailManager = \Drupal::service(‘plugin.manager.mail’);
$params[‘body’] = ‘本文の内容’;

$module = ‘d8mail’;
$key = ‘mail_post’;
$to = ‘送信先メールアドレス’;
$langcode = \Drupal::currentUser()->getPreferredLangcode();
$send = true;

$result = $mailManager->mail($module, $key, $to, $langcode, $params, NULL, $send);

if ($result[‘result’] !== true) {
drupal_set_message(t(‘メール送信エラー’), ‘error’);
}else {
drupal_set_message(t(‘メール送信完了’));
}
}

Drupalのドキュメントは基本的に日本語です。日本語ドキュメントがなく参考になりそうなものは少しずつですが公開していきたいと思います。

今回参考にさせていただいたのはこちら。

https://code.tutsplus.com/tutorials/using-and-extending-the-drupal-8-mail-api-part-1–cms-23419