【问题标题】:Polling Multiple email accounts from one app从一个应用程序轮询多个电子邮件帐户
【发布时间】:2014-12-06 04:35:21
【问题描述】:

我应该使用 spring 集成在我们的邮件服务器上轮询 3 个电子邮件收件箱 我有三个入站电子邮件适配器执行此操作,每个轮询器处理不同的业务逻辑。 假设收件箱是 I1、I2 和 I3 当有人发送一封电子邮件,其中包含收件人地址中的三个电子邮件 ID 时,就会出现问题。(I1@domain.org,I2@domain.org,I3.domain.org)。三个投票者按预期从每个收件箱中提取电子邮件。

有没有办法为每个电子邮件轮询器确定正确的“收件人”地址并获取 mail_to 标头中的值。现在它有 (I1@domain.org,I2@domain.org,I3.domain.org) 在里面。

【问题讨论】:

    标签: spring email jakarta-mail spring-integration


    【解决方案1】:

    这取决于你所说的“正确”。

    电子邮件标头中可能没有与邮箱的主要用户相对应的地址。或者可能不止一个。

    在简单的情况下,必须有人告诉您与您正在轮询的邮箱关联的主要电子邮件地址是什么。通常有明显的关联,但并非总是如此。如果有人告诉你这个,你可以检查传入的消息并尝试匹配它们,但同样可能没有匹配。

    您希望如何使用这些信息?这可能会决定是否适合猜测、使用启发式或因为无法解决问题而放弃。

    【讨论】:

    • 每个轮询器在从收件箱中读取电子邮件时都会收到一个 javamailmessage。问题更多的是 Spring Integration 人员,看看我是否可以做任何事情,例如通过正确的 spring 集成轮询器来丰富标题为了解决这个问题,因为轮询者知道他们正在轮询哪个收件箱
    • 有没有办法公开访问 MailMessge->url->username 属性
    【解决方案2】:

    根据对另一个答案的评论,“正确”是指确定电子邮件源自哪个适配器。

    尚不清楚您为什么需要这个,因为无论如何每个都是由“不同的业务逻辑”处理的。我可以看到,如果适配器提供相同的逻辑,它可能会很有用。

    目前无法让适配器自己添加标头。

    您可以在每个适配器之后添加一个<header-enricher/> 以添加标头以识别哪个适配器收到了消息。

    编辑:(对于下面的 cmets)。

    您不能将<int-mail:header-enricher/> 用于自定义标头,但您可以使用常规的标头丰富器:

    <int:header-enricher ...>
       <int:header name="#{T(org.springframework.integration.mail.MailHeaders).TO}"
                   value="I1@domain.org" />
       <int:header name="x-Foo" value="bar" />
       <int:header name="x-Baz" expression="payload.getHeader("x-baz") /> <!-- payload is a MimeMessage -->
    </int:header-enricher>
    

    int-mail 版本只是为了方便内置标头。

    没有要覆盖的现有“TO”标头 - 它不是由入站适配器填充的。

    【讨论】:

    • 谢谢加里。我需要确定电子邮件来自哪个收件箱并触发不同的业务层服务。
    • 谢谢我尝试过,我将适配器连接到具有标题丰富器的 int 链。适配器“通道”是此链的输入通道。这是正确的方法吗。流似乎在适配器之后立即停止。我仍在试图弄清楚为什么! ......虽然我认为它没有按预期工作!试图找出现在出了什么问题!
    • 为什么不简单地将每个适配器连接到该特定收件箱的适当业务流?打开 DEBUG 日志记录并通过流跟踪消息。如果您仍然无法弄清楚,请发布您的配置。
    • 1) 我可以在入站电子邮件适配器之后使用 int-mail:header 丰富器并覆盖 int-mail:to header 吗? 2)是否可以使用 int-mail:header-enricher 添加自定义标头
    • 对不起!刚刚看到你的评论。我有 7 或 8 个轮询器连接到一个变压器,然后它又连接到一个分离器,该分离器连接到一个文件出站网关。我采用了 spring 集成示例并根据我的需要对其进行了很多调整。我将附件、电子邮件正文下载为文件,还编写了元数据文件 (xml) 和 .done 文件。我有另一个文件轮询应用程序可以选择这些文件并执行必要的业务逻辑。
    猜你喜欢
    • 1970-01-01
    • 2012-03-24
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多