2009-08-21 81 views
4

我正在編寫一個rails應用程序,在發生某些操作時發送電子郵件,用戶可以回覆這些電子郵件,系統需要將回覆電子郵件與發送給用戶的原始電子郵件相匹配。ActionMailer獲取發送消息的messageid

看起來最好的方法是在發送消息時保存消息ID頭字段,這可能在ActionMailer中嗎?然後,我可以從回覆中檢索參考標題並匹配消息。

如果這是不可能的,是否有任何替代解決方案?

回答

1

我不確定在actionmailer中是否可以訪問消息ID,但是可以添加自己的自定義標頭,然後在用戶回覆時引用這些標頭。

你這樣做的郵件模型中,如下所示: -

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

另一種選擇是將跟蹤代碼添加到電子郵件的「回覆」字段 是這樣的: 回覆:通知+ $ { notifcation_id}@yourdomain.com

例如,如果通知ID爲123,則用戶將回復[email protected],當系統收到電子郵件時,123可用於識別原始消息。

0
+0

這根本沒有幫助。 – Greg 2010-01-13 11:57:45

+1

對不起格雷格,我想提的是,你可以訪問你的ActionMailer子類中的TMail :: Mail對象的消息ID。你不能在http://tmail.rubyforge.org/rdoc/classes/TMail/Mail.html#M000083 看到參考例如,你可以創建一個新的郵件與「郵件= UserMailer.create_notification_mail」(如果UserMailer是你的ActionMailer的子類),然後使用mail.message_id訪問消息標識。 但是另一方面,我更喜歡上面描述的「ez」方式來爲你的回覆地址添加一個標記。 希望能幫助更多。 – anka 2010-01-24 17:39:32

9

使用Rails 3,這是可能的:

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

0

可以設置在你的郵件類別中的Message-ID標頭是這樣的

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