From 6edccec1b97af46d2133ce701d7c307d213da9c6 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 12 Dec 2018 16:34:05 -0800 Subject: Basic docs for most classes --- app/models/action_mailbox/inbound_email/message_id.rb | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'app/models/action_mailbox/inbound_email/message_id.rb') diff --git a/app/models/action_mailbox/inbound_email/message_id.rb b/app/models/action_mailbox/inbound_email/message_id.rb index 70d39d1e33..dc17e48e74 100644 --- a/app/models/action_mailbox/inbound_email/message_id.rb +++ b/app/models/action_mailbox/inbound_email/message_id.rb @@ -1,3 +1,9 @@ +# The `Message-ID` as specified by rfc822 is supposed to be a unique identifier for that individual email. +# That makes it an ideal tracking token for debugging and forensics, just like `X-Request-Id` does for +# web request. +# +# If an inbound email does not, against the rfc822 mandate, specify a Message-ID, one will be generated +# using the approach from `Mail::MessageIdField`. module ActionMailbox::InboundEmail::MessageId extend ActiveSupport::Concern @@ -6,6 +12,9 @@ module ActionMailbox::InboundEmail::MessageId end module ClassMethods + # Create a new `InboundEmail` from the raw `source` of the email, which be uploaded as a Active Storage + # attachment called `raw_email`. Before the upload, extract the Message-ID from the `source` and set + # it as an attribute on the new `InboundEmail`. def create_and_extract_message_id!(source, **options) create! message_id: extract_message_id(source), **options do |inbound_email| inbound_email.raw_email.attach io: StringIO.new(source), filename: "message.eml", content_type: "message/rfc822" -- cgit v1.2.3