我应该使用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)。
答案 0 :(得分:1)
这取决于你对“正确”的意思。
电子邮件标题中可能没有与邮箱主要用户对应的地址。或者可能不止一个。
在简单的情况下,有人必须告诉您与您正在轮询的邮箱相关联的主电子邮件地址。通常有明显的关联,但并非总是如此。如果有人告诉你这个,你可以检查传入的消息并尝试匹配它们,但同样可能没有匹配。
您想如何使用这些信息?这可能决定是否适合猜测,使用启发式或放弃,因为你无法解决问题。
答案 1 :(得分:0)
根据对其他答案的评论,通过"对"你的意思是确定电子邮件来自哪个适配器。
我们不清楚为什么你需要这个,因为每个都是由不同的业务逻辑处理的#34;无论如何。我可以看到,如果适配器提供相同的逻辑,它可能是有用的。
目前还没有办法让适配器自己添加标题。
您可以在每个适配器后添加<header-enricher/>
以添加标头,以识别哪个适配器收到了该消息。
编辑:(以下评论)。
您无法使用<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
版本只是内置标题的便利。
没有&#34; TO&#34;要覆盖的标头 - 它没有由入站适配器填充。