LoginSignup
0
1

More than 5 years have passed since last update.

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

Posted at

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;
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1