class ActionMailbox::Ingresses::Sendgrid::InboundEmailsController
Ingests inbound emails from SendGrid. Requires an email
parameter containing a full RFC 822 message.
Authenticates requests using HTTP basic access authentication. The username is always actionmailbox
, and the password is read from the application’s encrypted credentials or an environment variable. See the Usage section below.
Note that basic authentication is insecure over unencrypted HTTP. An attacker that intercepts cleartext requests to the SendGrid ingress can learn its password. You should only use the SendGrid ingress over HTTPS.
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 -
404 Not Found
if Action Mailbox is not configured to accept inbound emails from SendGrid -
422 Unprocessable Entity
if the request is missing the requiredemail
parameter -
500 Server Error
if the ingress password is not configured, or if one of the Active Record database, the Active Storage service, or the Active Job backend is misconfigured or unavailable
Usage
-
Tell Action Mailbox to accept emails from SendGrid:
# config/environments/production.rb config.action_mailbox.ingress = :sendgrid
-
Generate a strong password that Action Mailbox can use to authenticate requests to the SendGrid ingress.
Use
bin/rails credentials:edit
to add the password to your application’s encrypted credentials underaction_mailbox.ingress_password
, where Action Mailbox will automatically find it:action_mailbox: ingress_password: ...
Alternatively, provide the password in the
RAILS_INBOUND_EMAIL_PASSWORD
environment variable. -
Configure SendGrid Inbound Parse to forward inbound emails to
/rails/action_mailbox/sendgrid/inbound_emails
with the usernameactionmailbox
and the password you previously generated. If your application lived athttps://example.com
, you would configure SendGrid with the following fully-qualified URL:https://actionmailbox:PASSWORD@example.com/rails/action_mailbox/sendgrid/inbound_emails
NOTE: When configuring your SendGrid Inbound Parse webhook, be sure to check the box labeled *“Post the raw, full MIME message.”* Action Mailbox needs the raw MIME message to work.
Inherits From
Public instance methods
Source code GitHub
# File actionmailbox/app/controllers/action_mailbox/ingresses/sendgrid/inbound_emails_controller.rb, line 51
def create
ActionMailbox::InboundEmail.create_and_extract_message_id! mail
rescue JSON::ParserError => error
logger.error error.message
head :unprocessable_entity
end