我有一个通过以下方式创建的Mail :: Message对象:
mail_message_object = mailer.send(method_symbol, *parameters)
这里method_symbol指定邮件的类型。现在,我的问题是,当尝试使用这个特定的mail_message_object的message_id时,它显示我没有。
mail_message_object.message_id --> nil
但如果我这样做:
mail_message_object.to_s
或
puts mail_message_object
如果我尝试访问message_id,它会向我显示正确的message_id。
mail_message_object.message_id ---> 54f033bb1159a_1beec30f78570bd@samarth.mail
我不明白这里发生了什么。
答案 0 :(得分:0)
这似乎是有意的。您必须致电#encoded
(#to_s
内部也会这样做)才能获得message_id
:
MessageIdField对象将自动生成唯一的消息ID 如果您尝试编码或输出to_s而不指定 消息ID。
https://github.com/mikel/mail/blob/master/lib/mail/message.rb#L1426
此行为允许您设置自定义消息ID。因此,如果您需要生成的ID,最简单的方法就是之前调用mail_message_object.encoded
,就像您已经做过的那样。