Class: ActionMailbox::InboundEmail
- Includes:
 - Incineratable, MessageId, Routable
 
- Defined in:
 - app/models/action_mailbox/inbound_email.rb
 
Overview
The InboundEmail is an Active Record that keeps a reference to the raw email stored in Active Storage and tracks the status of processing. By default, incoming emails will go through the following lifecycle:
- 
Pending: Just received by one of the ingress controllers and scheduled for routing.
 - 
Processing: During active processing, while a specific mailbox is running its #process method.
 - 
Delivered: Successfully processed by the specific mailbox.
 - 
Failed: An exception was raised during the specific mailbox's execution of the
#processmethod. - 
Bounced: Rejected processing by the specific mailbox and bounced to sender.
 
Once the InboundEmail has reached the status of being either delivered, failed, or bounced, it'll count as having been #processed?. Once processed, the InboundEmail will be scheduled for automatic incineration at a later point.
When working with an InboundEmail, you'll usually interact with the parsed version of the source, which is available as a Mail object from #mail. But you can also access the raw source directly using the #source method.
Examples:
inbound_email.mail.from # => 'david@loudthinking.com'
inbound_email.source # Returns the full rfc822 source of the email as text
  Defined Under Namespace
Modules: Incineratable, MessageId, Routable
Instance Method Summary collapse
Methods included from Incineratable
#incinerate, #incinerate_later
Methods included from Routable
Instance Method Details
#mail ⇒ Object
      35 36 37  | 
    
      # File 'app/models/action_mailbox/inbound_email.rb', line 35 def mail @mail ||= Mail.from_source(source) end  | 
  
#processed? ⇒ Boolean
      43 44 45  | 
    
      # File 'app/models/action_mailbox/inbound_email.rb', line 43 def processed? delivered? || failed? || bounced? end  | 
  
#source ⇒ Object
      39 40 41  | 
    
      # File 'app/models/action_mailbox/inbound_email.rb', line 39 def source @source ||= raw_email.download end  |