Rails: Mail::Message 对象没有显示 message_id 属性,但是
Rails: Mail::Message object isn't showing the message_id attribute but
我有一个 Mail::Message 对象,它是通过以下方式创建的:
mail_message_object = mailer.send(method_symbol, *parameters)
这里的method_symbol指定了邮件的类型。现在,我的问题是,当尝试使用这个特定的 mail_message_object 的 message_id 时,它显示为 nil。
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
我不明白这里发生了什么。
这似乎是故意的。您必须调用 #encoded
(#to_s
也在内部调用)以获得 message_id
:
The MessageIdField object will automatically generate a unique message ID
if you try and encode it or output it to_s without specifying a
message id.
https://github.com/mikel/mail/blob/master/lib/mail/message.rb#L1426
此行为允许您设置自定义消息 ID。因此,如果您需要生成的 ID,最简单的方法是之前调用 mail_message_object.encoded
,就像您已经调用的那样。
我有一个 Mail::Message 对象,它是通过以下方式创建的:
mail_message_object = mailer.send(method_symbol, *parameters)
这里的method_symbol指定了邮件的类型。现在,我的问题是,当尝试使用这个特定的 mail_message_object 的 message_id 时,它显示为 nil。
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
我不明白这里发生了什么。
这似乎是故意的。您必须调用 #encoded
(#to_s
也在内部调用)以获得 message_id
:
The MessageIdField object will automatically generate a unique message ID if you try and encode it or output it to_s without specifying a message id.
https://github.com/mikel/mail/blob/master/lib/mail/message.rb#L1426
此行为允许您设置自定义消息 ID。因此,如果您需要生成的 ID,最简单的方法是之前调用 mail_message_object.encoded
,就像您已经调用的那样。