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