跳至内容 跳至搜索

从 SendGrid 接收传入邮件。需要包含完整 RFC 822 消息的 email 参数。

使用 HTTP 基本访问身份验证进行身份验证。用户名始终为 actionmailbox,密码从应用程序的加密凭据或环境变量中读取。请参阅下面的用法部分。

请注意,基本身份验证在未加密的 HTTP 上是不安全的。拦截到 SendGrid 接收的明文请求的攻击者可以学习其密码。您应该只在 HTTPS 上使用 SendGrid 接收。

返回

  • 204 无内容 如果成功记录了传入电子邮件并排队路由到适当的邮箱

  • 401 未授权 如果无法验证请求的签名

  • 404 未找到 如果 Action Mailbox 未配置为接受来自 SendGrid 的传入电子邮件

  • 422 不可处理的实体 如果请求缺少必需的 email 参数

  • 500 服务器错误 如果未配置接收密码,或如果 Active Record 数据库、Active Storage 服务或 Active Job 后端之一配置错误或不可用

用法

  1. 告诉 Action Mailbox 接受来自 SendGrid 的电子邮件

    # config/environments/production.rb
    config.action_mailbox.ingress = :sendgrid
    
  2. 生成一个 Action Mailbox 可以用来验证对 SendGrid 接收的请求的身份验证的强密码。

    使用 bin/rails credentials:edit 将密码添加到应用程序的加密凭据中的 action_mailbox.ingress_password 下,Action Mailbox 将自动找到它

    action_mailbox:
      ingress_password: ...
    

    或者,在 RAILS_INBOUND_EMAIL_PASSWORD 环境变量中提供密码。

  3. 配置 SendGrid Inbound Parse 将传入电子邮件转发到 /rails/action_mailbox/sendgrid/inbound_emails,用户名为 actionmailbox,密码为之前生成的密码。如果您的应用程序位于 https://example.com,您将使用以下完全限定的 URL 配置 SendGrid

    https://actionmailbox:[email protected]/rails/action_mailbox/sendgrid/inbound_emails
    

    注意:在配置您的 SendGrid Inbound Parse Webhook 时,请务必选中标有 *“发布原始完整 MIME 消息”* 的复选框。Action Mailbox 需要原始 MIME 消息才能工作。

方法
C

实例公共方法

创建()

# 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