ActionMailer получить messageid для отправленных сообщений

Я пишу приложение rails, которое отправляет электронные письма, когда происходят определенные действия, пользователи могут затем отвечать на эти электронные письма, и система должна сопоставить ответное электронное письмо с исходным электронным письмом, отправленным пользователю.

Похоже, что лучший способ сделать это — сохранить поле заголовка идентификатора сообщения при отправке сообщений, возможно ли это в ActionMailer? Затем я могу получить заголовок ссылок из ответов и сопоставить сообщения.

Если это невозможно, есть ли альтернативные решения?


person Greg    schedule 21.08.2009    source источник


Ответы (5)


С Rails 3 это возможно:

message = Mailer.welcome(@user).deliver
message.message_id #=> 4ccc56d19...

person mattwindwer    schedule 30.10.2010

другой альтернативой является добавление кода отслеживания в поле «Ответить на» электронной почты примерно так: ответить на: уведомление+${notifcation_id}@yourdomain.com

например, если идентификатор уведомления равен 123, пользователь ответит на уведомление [email protected], когда система получит электронное письмо, 123 можно использовать для идентификации исходного сообщения.

person ez.    schedule 21.08.2009

Я не уверен, что в actionmailer можно получить доступ к идентификатору сообщения, однако можно добавить свои собственные заголовки, а затем ссылаться на них, когда пользователь отвечает.

Вы делаете это в модели почтовой программы следующим образом:

@headers["VetId"] = order.vet_id
person Steve Weet    schedule 21.08.2009

Посмотрите на http://tmail.rubyforge.org/!

person anka    schedule 13.01.2010
comment
Извините, Грег, я хотел упомянуть, что вы можете получить доступ к идентификатору сообщения вашего объекта TMail::Mail в вашем подклассе ActionMailer. Вы можете увидеть ссылку на tmail.rubyforge.org/rdoc/classes/ TMail/Mail.html#M000083 Например, вы можете создать новую почту с помощью mail = UserMailer.create_notification_mail (если UserMailer является вашим подклассом ActionMailer), а затем получить доступ к идентификатору сообщения с помощью mail.message_id. Но, с другой стороны, я предпочитаю способ, описанный выше, чтобы добавить токен к вашему ответному адресу. Надеюсь, что это помогло немного больше. - person anka; 24.01.2010

Вы можете установить заголовок Message-ID в своем классе почтовой программы.

class mailer < ActionMailer::Base
  default "Message-ID" => lambda {"#{SecureRandom.uuid}@domain.com"}   
  ....
end
person lsaffie    schedule 12.02.2014