2009-08-21 46 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