2

我们正在使用 Rails 7 构建一个应用程序,除其他功能外,该应用程序应在电子邮件发送到其电子邮件地址之一(例如,格式ticket-{uuid}@ourdomain.com)时执行一些操作。

Rails 的 ActionMailbox 路由适用于直接电子邮件。但是,在转发电子邮件时,ActionMailbox 根本无法识别它们。

我们如何确保使用 ActionMailbox 也能正确处理和路由转发的电子邮件?


编辑:我们正在使用的代码的简化版本:

class ApplicationMailbox < ActionMailbox::Base  
  routing /^ticket-(.+)@ourdomain.com$/i => :service_tickets
end
class ServiceTicketsMailbox < ApplicationMailbox
  def process
    puts "processing email: #{mail.inspect}"
    # ... and then we extract its fields
    # and store some of them in the database.
  end
end
4

2 回答 2

0

API 从不包含查看传递堆栈中最新邮件地址以外的任何其他邮件地址的功能。API 本身提供的唯一选项是使用InboundEmail::source获取原始消息以进行进一步解析。

在这个过程之后,我可以想象使用RoutingJob将邮件转发到正确的接收者。

我不确定回调是否有帮助。

另外关于MessageId我不知道是否可以提取正确的 Id。

据我所知,整个挑战至少需要一些工作,而且我认为没有简单的解决方案。

于 2022-02-05T02:10:34.740 回答
0

好的,我想我发现了问题:

当您发送普通电子邮件时,收件人标题如下所示To: ticket-123@@ourdomain.com,并且与/^ticket-(.+)@ourdomain.com$/i

但是,当您转发电子邮件时,标题看起来像这样To: John Doe <ticket-123@ourdomain.com>,这与您的正则表达式不匹配。

将正则表达式更改为/ticket-(.+)@ourdomain.com/i,它应该可以工作。

您可以在https://regexr.com/上尝试一下

于 2022-02-09T18:12:32.243 回答