Redmineの通知メールの「件名」を変更する方法

2014/10/17追記
Ver.2.5.2の仕様変更に対応いたしました。コメントいただいた方、ありがとうございました。

前置き

前回は通知メールの本文に「期日」を表示する方法をお伝えしましたが、
今回は、通知メールの件名を変更する方法をご紹介しようと思います。

あの…通知メールの件名って、…長くね?

デフォルトだと、
[プロジェクト名 – トラッカー名 #チケットNo.] (ステータス) 題名
となっているので、
一つ例を挙げると、件名だけで

[ほげほげシステムリニューアルプロジェクト – 不具合 #1450] (進行中) ほげほげ画面でほげほげすると表示がずれる

ってことになっちゃいます。
人によっては、
『[ほげほげシステムリニューアルプロジェクト – 不』
ぐらいで表示が切れてしまうのではないでしょうか。
(まぁ「メールだけで済ませずに、ちゃんとRedmineに定期的にアクセスしなさいよ」というツッコミは一旦置いといて…)

というわけで、

やりたいこと

・件名からプロジェクト名を消したい
・ステータスに変更がなくても、常に件名にステータスが表示されるようにしたい

対象ファイル(修正するファイル)

/redmineのルートディレクトリ/app/models/mailer.rb

修正内容(Redmine-2.5.2)

  # Builds a mail for notifying to_users and cc_users about a new issue
  def issue_add(issue, to_users, cc_users)
    redmine_headers 'Project' => issue.project.identifier,
                    'Issue-Id' => issue.id,
                    'Issue-Author' => issue.author.login
    redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
    message_id issue
    references issue
    @author = issue.author
    @issue = issue
    @users = to_users + cc_users
    @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue)
    mail :to => to_users.map(&:mail),
      :cc => cc_users.map(&:mail),
-     :subject => "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] (#{issue.status.name}) #{issue.subject}"
+     :subject => "[#{issue.tracker.name} ##{issue.id}] (#{issue.status.name}) #{issue.subject}"
  end

  # Notifies users about a new issue
  def self.deliver_issue_add(issue)
    to = issue.notified_users
    cc = issue.notified_watchers - to
    issue.each_notification(to + cc) do |users|
      Mailer.issue_add(issue, to & users, cc & users).deliver
    end
  end

  # Builds a mail for notifying to_users and cc_users about an issue update
  def issue_edit(journal, to_users, cc_users)
    issue = journal.journalized
    redmine_headers 'Project' => issue.project.identifier,
                    'Issue-Id' => issue.id,
                    'Issue-Author' => issue.author.login
    redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
    message_id journal
    references issue
    @author = journal.user
-   s = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] "
+   s = "[#{issue.tracker.name} ##{issue.id}] "
-   s << "(#{issue.status.name}) " if journal.new_value_for('status_id')
+   s << "(#{issue.status.name}) "
    s << issue.subject

結果

▼変更前の件名

[ほげほげシステムリニューアルプロジェクト – 不具合 #1450] (進行中) ほげほげ画面でほげほげすると表示がずれる

▼変更後の件名

[不具合 #1450] (進行中) ほげほげ画面でほげほげすると表示がずれる
このチケットに変更やレスがあっても、ステータスの「(進行中)」は常に件名に表示されたまま)

というわけで、この記事が僕と同じように「手さぐりでRedmineをカスタマイズしながら使っている、プレイングマネージャー的な雑用係 兼 ディレクター 兼 プロマネ」の手助けになれば幸いです。
otsukare-tion.comはがんばる社畜を応援しています。

Amazon

Redmineによるタスクマネジメント実践技法
Redmine -もっと手軽にプロジェクト管理!
入門Redmine 第3版

2 thoughts on “Redmineの通知メールの「件名」を変更する方法

  • 2014/10/16 at 11:04
    Permalink

    記事を参照させて頂き、チームメンバーの要望に対応できました。
    上記修正を行った際、「新規」で起票したチケットに対して、件名が反映されていない指摘がありましたので、修正内容をコメント致します。

    #redmine-2.5.2 44行目
    修正前
    :subject =”[#{issue.project.name} – #{issue.tracker.name} ##{issue.id}] (#{issue.status.name}) #{issue.subject}”

    修正後
    :subject => “[#{issue.tracker.name} ##{issue.id}] (#{issue.status.name}) #{issue.subject}”

    Reply
    • 2014/10/17 at 23:43
      Permalink

      コメント&ご指摘ありがとうございます。
      お役に立てて何よりです。

      2.5.2で仕様が変わったんですね…。
      記事に修正を反映いたしました。

      ご指摘ありがとうございました。
      今後ともどうぞよろしくお願いいたします。

      Reply

コメントを残す