2009-08-21 4 views
4

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

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

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

ответ

1

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

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

@headers["VetId"] = order.vet_id 
3

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

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

0

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

+0

Это совсем не полезно. – Greg

+1

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

9

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

сообщение = Mailer.welcome (@user) Поставлять
message.message_id # => 4ccc56d19 ...

0

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

class mailer < ActionMailer::Base 
    default "Message-ID" => lambda {"#{SecureRandom.uuid}@domain.com"} 
    .... 
end 
Смежные вопросы