簡體   English   中英

從一個應用程序輪詢多個電子郵件帳戶

[英]Polling Multiple email accounts from one app

我應該使用Spring集成來輪詢我們的郵件服務器上的3個電子郵件收件箱。我有三個入站電子郵件適配器,每個輪詢器都處理不同的業務邏輯。 假設收件箱是I1,I2和I3,則出現此問題,當某人發送一封電子郵件時,收件人地址為(I1 @ domain.org,I2 @ domain.org,I3.domain.org)中的三個電子郵件ID。 這三個投票者按預期從每個收件箱中提取電子郵件。

有沒有一種方法可以確定每個電子郵件輪詢者的正確“收件人”地址,並在mail_to標頭中獲取值。 現在,它具有(I1 @ domain.org,I2 @ domain.org,I3.domain.org)。

這取決於您所說的“正確”。

電子郵件標題中可能沒有與郵箱的主要用戶相對應的地址。 或者可能不止一個。

在簡單的情況下,有人必須告訴您與要輪詢的郵箱關聯的主要電子郵件地址。 通常存在明顯的關聯,但並非總是如此。 如果有人告訴您,您可以檢查傳入的消息並嘗試匹配它們,但是同樣可能沒有匹配項。

您想如何使用此信息? 那可能會決定猜測,使用啟發式方法還是放棄(因為您無法解決問題)是否合適。

根據對另一個答案的評論,“正確”是指確定電子郵件源自哪個適配器。

鑒於每種情況都是由“不同的業務邏輯”處理的,因此尚不清楚為什么需要這樣做。 我可以看到,如果適配器提供相同的邏輯,則可能會很有用。

當前沒有辦法讓適配器添加標頭本身。

您可以在每個適配器之后添加<header-enricher/> ,以添加頭以標識哪個適配器接收到該消息。

編輯:(對於下面的評論)。

您不能將<int-mail:header-enricher/>用於自定義標題,但是可以使用常規的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”標頭要覆蓋-入站適配器未填充該標頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM