我正在编写一个rails应用程序,当某些操作发生时发送电子邮件,然后用户可以回复这些电子邮件,系统需要将回复电子邮件与发送给用户的原始电子邮件相匹配。
这样做的最佳方法似乎是在发送邮件时保存邮件ID标头字段,这是否可以在ActionMailer中实现?然后,我可以从回复中检索引用标头并匹配消息。
如果无法做到这一点,还有其他解决办法吗?
答案 0 :(得分:10)
使用Rails 3,这是可能的:
message = Mailer.welcome(@user).deliver
message.message_id#=> 4ccc56d19 ...
答案 1 :(得分:3)
另一种方法是在电子邮件的“回复”字段中添加跟踪代码 这样的事情: 回复:通知+ $ {notifcation_id} @ yourdomain.com
例如,如果通知ID为123,则用户将回复通知+123@yourdomain.com,当系统收到电子邮件时,123可用于识别原始邮件。
答案 2 :(得分:1)
我不确定动作管理器是否可以访问消息ID,但是可以添加自己的自定义标头,然后在用户回复时引用它们。
您可以在邮件程序模型中执行以下操作: -
@headers["VetId"] = order.vet_id
答案 3 :(得分:0)
答案 4 :(得分:0)
您可以在邮件程序类
中设置Message-ID标头class mailer < ActionMailer::Base
default "Message-ID" => lambda {"#{SecureRandom.uuid}@domain.com"}
....
end