menu
Webを活用してお客様のビジネス課題を解決します。札幌・東京を拠点にWebコンサルティングをコアにした、Web制作・システム開発・サーバ構築会社です。

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

シェア
ツイート
シェア
ブックマーク
タイトルとURLをコピー

最終更新日:2018/12/27   公開日: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