Help us understand the problem. What is going on with this article?

Redmineでもletter_openerを使って調整したメールを確認してみよう。

これはなに?

  • Redmineでは、メール本文のヘッダやフッタのカスタマイズができます
  • このカスタマイズが問題ないかどうか、letter_openerというgemを使って確認する方法をご紹介します

どういう人向けの記事?

このgemは、Railsでは非常に利用されているgemです。
どちらかというとRubyやRails専門ではないけれど、Redmineを運用したり、必要に応じてカスタマイズしたい人向けになります。

  • developmentモード で利用が前提のgemのため、開発環境で検証する方法を理解している方向けになります
    • カスタマイズの際に、まずdevelopmentモードで機能を追加調整する方針をとっている方
    • その上で本番に適用する、という流れを実施できる方

どういうシーンに使うと便利?

  • Redmineでメール部分のカスタマイズをしている方向け
  • 管理画面からのヘッダ / フッタ調整だけでなく、内部のメール用のテンプレートをカスタマイズしたい場合
  • プラグインでメールをカスタマイズしたり通知を追加したりする場合

想定通りの文言が当てはまってメールが生成されているかを確認しやすくなります。

やらないこと

letter_openerの設定

公式のREADMEに記載がある通り進めればOKです。
RedmineもRailsアプリケーションなので、Gemfileとdevelopment.rbの設定のみで利用できるようになります。

まずはgemの追加

  • Redmineのソースをダウンロード(clone) します
  • Redmine直下のGemfileに、以下を追記します
Gemfile
gem "letter_opener", :group => :development

追加したら、この追加gemを取得するため、bundle install を実行します。すでにRedmineに必要なgemが入っており、あとからその環境に追加する場合でも、同じくbundle install (bundle) であれば、追加で入ります。

# オプション無しだとdevelopmentモードのgemを取得します
bundle install

設定ファイルの調整

Redmine公式のメール設定を確認

Redmineの公式サイトでの、メール送信設定は以下に記載があります。

基本は、config/configuration.yml.example を元に config/configuration.yml ファイルを作成し、設定をしていきます。

developmentモードでも実際にsmtpを使ってメール送信を試すことができますが、デフォルトでは送信はされず、ログに送信メッセージが出力されます。

letter_openerの設定を追加する

letter_openerのREADMEに沿って設定する場合

developmentモードではメール送信をせず、letter_openerで確認する場合は、config/environments/development.rb に追記します。

config/environments/development.rb
config.action_mailer.delivery_method = :letter_opener
config.action_mailer.perform_deliveries = true

Redmineにも config/environments/development.rb があるので、上記の通りの追記で利用が可能です。

Redmineのconfig/configuration.ymlを使う場合

Redmine公式のメール設定にも記載がある通り、こちらでも送信設定を調整することができます。
delivery_methodをletter_openerに設定となります。

config/configuration.yml
development:
  email_delivery:
    delivery_method: :letter_opener
    perform_deliveries: true

メールを送って確認してみる

developmentモードでチケットを作成、終了してみた例です。

  • メール送信対象のものは、tmp/letter_opener/ 以下に書き出されます
  • 実際の送信内容と同じく、メールのテンプレートに変数が展開された形で書き出しになります

mail-sending.png

カスタマイズしたメールの確認

Redmineに慣れていない場合は、ユーザの方が直にメールに返信してしまう、ということもありがちです。

運用の初めのころは、そういったことも配慮して「このメールには返信しないでくださいね!」的なメッセージを追加していました。

Redmineの管理画面では、メール本文の上部と下部(ヘッダ / フッタ)に簡単にメッセージを追加できますので、試しに設定して、想定通りになっているか確認してみます。

Redmineの管理画面

redmine-setting.png

結果はこのような感じ。

mail-customize.png

簡単ですが、十分に確認ができますね!

letter_opener_webも使う場合

letter_openerは、送信メールをファイルに書き出してくれるgemです。

さて、letter_openerはファイルシステムに書き出すため、ローカル開発環境やターミナルでの確認はできますが、開発環境がサーバにある場合は、ちょっと確認がしづらいですね。

こちらもRails開発ではポピュラーですが、letter_opener_webというgemを追加すると、Railsアプリケーションに同居する形で、ブラウザを通してletter_openerで書き出したメールを確認することができます。

追加するものは?

Gemfileに以下を追加します。

# developmentモードでのみ利用します
group :development do
  gem 'letter_opener_web', '~> 1.0'
end
  • gem "letter_opener" 単体を先に追加していれば、置き換えをします
  • bundle installの際に、依存関係でletter_openerも入ります
  • 上記の通り、letter_openerの設定が必要です
    • delivery_method = :letter_opener

ルーティングを追加

letter_opener_webのREADMEに記載のあるとおり、ルーティングを追加します。

config/routes.rb
# 設定例
redmine $ svn diff config/routes.rb
Index: config/routes.rb
===================================================================
--- config/routes.rb    (revision 19511)
+++ config/routes.rb    (working copy)
@@ -374,4 +374,6 @@
       end
     end
   end
+
+  mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development?
 end
  • mount LetterOpenerWeb::Engine, at: "/letter_opener" if Rails.env.development? を追加して再起動します

ブラウザから確認してみる

ふたたびメール送信対象の操作をしてみます。
こちらはチケット変更の例。

letter_opener_web.png

ブラウザでアクセスすると、新しいメールから降順に一覧が表示されます。
また、右側には最新のメールが表示されます。

キャプチャの左隅の、tmp/letter_opener/ 側の件数と一致します。
letter_opener_webの画面から、不要になったメールを削除することも可能です。

まとめ

以上、簡単な例でした。

一度通知が出てしまうと、相手のもとに届いてしまったメールは取り消せません。必要以上の情報が盛り込まれていないか?宛先は適切か?など、心配なことがありますね。
Redmineに限らず、慎重さが必要なメールに関しては、こういったツールでチェックができるというのは、とても助かりますね。

実運用の際の、なにかにお役に立てば幸いです。

akiko-pusu
コツコツと学習しながらのメモを書いています。Redmineのプラグイン開発に関連するものが多めです。記事にご興味を持っていただけたら嬉しいです!
https://daily-postit.hatenablog.com
crowdworks
21世紀の新しいワークスタイルを提供する日本最大級のクラウドソーシング「クラウドワークス」のエンジニアチームです!
https://crowdworks.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした