Drupal8

【Drupal8】メール送信内容を手っ取り早く確認したい

Drupal開発時、Dockerなどを使っているとメールが上手く送信できない事がある。

メールを送信できるようにする環境設定を棚上げしてメール送信内容だけ確認したい場合のTips。

自作モジュールないしソースがいじれる既存のモジュールが必要。

hook_mail_alter(&$message) が、メール送信時に呼ばれるのでこれを利用する。

drupal_set_message()で画面表示するときは改行されない(<br>タグも無視される)。

フラッシュメッセージでの表示と、テキストファイルへの書き出しとを行っている。テキストファイルの保存パスは以下の該当箇所を修正すること。

function {モジュール名}_mail_alter(&$message)

{
dump($message);

$str_header = '';
foreach ($message['headers'] as $key => $value) {
$str_header .= $key." : ".$value."\n";
}
$str_body = '';
foreach ($message['body'] as $key => $value) {
$str_body .= $value;
}

$data = '[ID]'.$message['id']."\n"
.'[SUBJECT]'.$message['subject']."\n"
."\n"
.'[HEADER]'."\n"
.$str_header
.'[BODY]'."\n"
.$str_body;
file_put_contents ('/{ここにメールの内容をテキストにしたものを保存するパスを記述}/mail_'.date('Ymd_His').'.txt', $data);

drupal_set_message('[ID]'. $message['id'], 'status', true);
drupal_set_message('[SUBJECT]'.$message['subject'], 'status', true);
drupal_set_message('[HEADER]'. $str_header, 'status', true);
drupal_set_message('[BODY]'. $str_body, 'status', true);

//リダイレクトを阻害する場合
//exit;
}