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,就像您已经调用的那样。