class ActionMailbox::Ingresses::Mailgun::InboundEmailsController
Ingests inbound emails from Mailgun. Requires the following parameters:
-
body-mime
: The full RFC 822 message -
timestamp
: The current time according to Mailgun as the number of seconds passed since the UNIX epoch -
token
: A randomly-generated, 50-character string -
signature
: A hexadecimal HMAC-SHA256 of the timestamp concatenated with the token, generated using the Mailgun API key
Authenticates requests by validating their signatures.
Returns:
-
204 No Content
if an inbound email is successfully recorded and enqueued for routing to the appropriate mailbox -
401 Unauthorized
if the request's signature could not be validated, or if its timestamp is more than 2 minutes old -
404 Not Found
if Action Mailbox is not configured to accept inbound emails from Mailgun -
422 Unprocessable Entity
if the request is missing required parameters -
500 Server Error
if the Mailgun API key is missing, or one of the Active Record database, the Active Storage service, or the Active Job backend is misconfigured or unavailable
Usage
-
Give Action Mailbox your Mailgun API key so it can authenticate requests to the Mailgun ingress.
Use
rails credentials:edit
to add your API key to your application's encrypted credentials underaction_mailbox.mailgun_api_key
, where Action Mailbox will automatically find it:action_mailbox: mailgun_api_key: ...
Alternatively, provide your API key in the
MAILGUN_INGRESS_API_KEY
environment variable. -
Tell Action Mailbox to accept emails from Mailgun:
# config/environments/production.rb config.action_mailbox.ingress = :mailgun
-
Configure Mailgun to forward inbound emails to
/rails/action_mailbox/mailgun/inbound_emails/mime
.If your application lived at
https://example.com
, you would specify the fully-qualified URLhttps://example.com/rails/action_mailbox/mailgun/inbound_emails/mime
.
Public Instance Methods
# File actionmailbox/app/controllers/action_mailbox/ingresses/mailgun/inbound_emails_controller.rb, line 48 def create ActionMailbox::InboundEmail.create_and_extract_message_id! params.require("body-mime") end
© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.