Есть ли простой способ сгруппировать электронные письма в поток, используя Rails ActionMailer? - PullRequest
0 голосов
/ 05 июля 2019

Я хочу, чтобы электронные письма, отправляемые из моего приложения Rails пользователям, в некоторых условиях группировались в потоки, как это делают электронные письма из GitHub. (в Gmail и Outlook.)

enter image description here

Я знаю, что нужны электронные письма с конкретными идентификаторами сообщений в In-Reply-To или References заголовках электронной почты.

Должен ли я управлять всеми идентификаторами сообщений в базе данных? Или есть более разумные способы сделать это в Ruby on Rails?

Я хочу знать, как лучше обрабатывать электронные письма в Rails.

1 Ответ

1 голос
/ 05 июля 2019

Нет необходимости отслеживать идентификатор сообщения в базе данных.

Единственное, что вам нужно, это метод, который генерирует один и тот же ID сообщения для одного и того же ввода (например, md5 hash). И вход этого метода должен быть чем-то, что не изменяет и идентифицирует все сообщения, которые должны быть сгруппированы вместе. В вашем примере с сгруппированными электронными письмами от GitHub о конкретных запросах извлечения они могли использовать идентификатор в качестве входных данных.

Я бы начал поиграться с чем-то вроде этого:

require 'digets'

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

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