跳至内容 跳至搜索

接收来自 Mailgun 的入站邮件。需要以下参数

  • body-mime:完整的 RFC 822 消息

  • timestamp: Mailgun 服务器当前时间,自 Unix 纪元以来的秒数

  • token: 随机生成的 50 个字符字符串

  • signature: 使用 Mailgun 签名密钥生成的,时间戳与令牌串联的十六进制 HMAC-SHA256

通过验证签名来验证请求。

返回

  • 204 无内容 如果入站邮件成功记录并排队,以路由到相应的邮箱

  • 401 未经授权 如果请求的签名无法验证,或其时间戳超过 2 分钟

  • 404 未找到 如果 Action Mailbox 未配置为接受来自 Mailgun 的入站邮件

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

  • 500 服务器错误 如果 Mailgun 签名密钥丢失,或者 Active Record 数据库、Active Storage 服务或 Active Job 后端配置错误或不可用

用法

  1. 将您的 Mailgun 签名密钥(您可以在 Mailgun 的“设置”>“安全和用户”>“API 安全”中找到)提供给 Action Mailbox,以便它可以验证对 Mailgun 入口点的请求。

    使用 bin/rails credentials:edit 将您的签名密钥添加到应用程序的加密凭据中,位于 action_mailbox.mailgun_signing_key 下,Action Mailbox 会自动找到它。

    action_mailbox:
      mailgun_signing_key: ...
    

    或者,在 MAILGUN_INGRESS_SIGNING_KEY 环境变量中提供您的签名密钥。

  2. 告诉 Action Mailbox 接受来自 Mailgun 的电子邮件

    # config/environments/production.rb
    config.action_mailbox.ingress = :mailgun
    
  3. 配置 Mailgun 将入站邮件转发到 /rails/action_mailbox/mailgun/inbound_emails/mime

    如果您的应用程序位于 https://example.com,则应指定完整的 URL https://example.com/rails/action_mailbox/mailgun/inbound_emails/mime

命名空间
方法
C

实例公共方法

create()

# File actionmailbox/app/controllers/action_mailbox/ingresses/mailgun/inbound_emails_controller.rb, line 49
def create
  ActionMailbox::InboundEmail.create_and_extract_message_id! mail
end