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 #process method.

  • 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

Namespace

Module

Methods

Instance Public methods

mail()

📝 Source code
# File actionmailbox/app/models/action_mailbox/inbound_email.rb, line 35
    def mail
      @mail ||= Mail.from_source(source)
    end
🔎 See on GitHub

processed?()

📝 Source code
# File actionmailbox/app/models/action_mailbox/inbound_email.rb, line 43
    def processed?
      delivered? || failed? || bounced?
    end
🔎 See on GitHub

source()

📝 Source code
# File actionmailbox/app/models/action_mailbox/inbound_email.rb, line 39
    def source
      @source ||= raw_email.download
    end
🔎 See on GitHub