使用 Rails ActionMailer 将电子邮件分组到一个线程中有什么简单的方法吗?

Any easy ways to group the emails together into a thread using Rails ActionMailer?

我希望从我的 Rails 应用程序发送给用户的电子邮件在某些情况下被分组到线程中,就像来自 GitHub 的电子邮件一样。 (在 Gmail 和 Outlook 中。)

我知道需要在 In-Reply-ToReferences 电子邮件 headers 中具有特定 Message-IDs 的电子邮件 headers。

我是否必须管理数据库中的所有 Message-IDs?或者在 Rails 上的 Ruby 中有更聪明的方法吗?

我想知道在 Rails 中线程化电子邮件的最佳做法。

无需在数据库中跟踪 Message-ID。

您唯一需要的是一种为相同输入生成相同 Message-ID 的方法(例如 md5 hash)。并且该方法的输入必须是不会改变的并且标识所有应该组合在一起的消息。在您的示例中,来自 GitHub 的关于特定拉取请求的分组电子邮件,他们可以使用 id 作为输入。

我会开始玩这样的东西:

require 'digets'

def message_id(identifer)
  Digest::MD5.hexdigest(identifer)
end

message_id("pull-123")
#=> "23172d2caceae88a1152e967af71fc6e"
message_id("issue-456")
#=> "26c89ed68512269d003d32811bbd4527"