接收来自 SMTP 服务器中继的入站电子邮件。
使用 HTTP 基本访问身份验证对请求进行身份验证。用户名始终为 actionmailbox
,密码从应用程序的加密凭据或环境变量中读取。请参阅下面的“用法”部分。
请注意,基本身份验证在未加密的 HTTP 上是不安全的。拦截到入口的明文请求的攻击者可以学习其密码。您应该只在 HTTPS 上使用此入口。
返回
-
204 无内容
,如果入站电子邮件成功记录并排队以路由到相应的邮箱 -
401 未经授权
,如果请求无法通过身份验证 -
404 未找到
,如果 Action Mailbox 未配置为接受来自 SMTP 服务器中继的入站电子邮件 -
415 不支持的媒体类型
,如果请求不包含 RFC 822 消息 -
500 服务器错误
,如果入口密码未配置,或者 Active Record 数据库、Active Storage 服务或 Active Job 后端之一配置错误或不可用
用法
-
告诉 Action Mailbox 接受来自 SMTP 中继的电子邮件
# config/environments/production.rb config.action_mailbox.ingress = :relay
-
生成一个 Action Mailbox 可以用来对入口请求进行身份验证的强密码。
使用
bin/rails credentials:edit
将密码添加到应用程序的加密凭据中的action_mailbox.ingress_password
下,Action Mailbox 会自动找到它action_mailbox: ingress_password: ...
或者,在
RAILS_INBOUND_EMAIL_PASSWORD
环境变量中提供密码。 -
将您的 SMTP 服务器配置为将入站电子邮件管道到适当的入口命令,提供中继入口的
URL
和您先前生成的INGRESS_PASSWORD
。如果您的应用程序位于
https://example.com
,您将配置 Postfix SMTP 服务器以将入站电子邮件管道到以下命令$ bin/rails action_mailbox:ingress:postfix URL=https://example.com/rails/action_mailbox/postfix/inbound_emails INGRESS_PASSWORD=...
这些流行的 SMTP 服务器提供内置的入口命令
-
Exim (
bin/rails action_mailbox:ingress:exim
) -
Postfix (
bin/rails action_mailbox:ingress:postfix
) -
Qmail (
bin/rails action_mailbox:ingress:qmail
)
-
- C
实例公共方法
create() 链接
来源:显示 | 在 GitHub 上
# File actionmailbox/app/controllers/action_mailbox/ingresses/relay/inbound_emails_controller.rb, line 54 def create if request.body ActionMailbox::InboundEmail.create_and_extract_message_id! request.body.read else head :unprocessable_entity end end