Как получить содержимое письма (тело письма и вложения) из весеннего сообщения об интеграции? - PullRequest
0 голосов
/ 02 июля 2019

Поэтому я интегрировал Spring Integration для получения писем, и все работает нормально.

Я пытаюсь преобразовать полезную нагрузку, которая является байтовым массивом, в строку.Вывод был разделен на необработанные разделы.

@ServiceActivator(inputChannel="emailChannel")
public void handleMessage(Message message, @Header("campaign_id") String campaign_id, @Header("tenant_identifier") String tenant_identifier) {
    try {
        TenantContext.setTenantId(tenant_identifier);

        emailCampaignService.recieveMailMessage(message, campaign_id);
    } catch (Exception e) {
       log.error("RecieveMailException{0}", e.getMessage());
    }finally {
        TenantContext.clearTenantId();
    }
    System.out.println(" campaign_id: " + campaign_id );
}

Я пытаюсь получить доступ к содержимому писем и вложениям, но безуспешно.Я считаю, что это как-то связано с полезной нагрузкой сообщения.

Теперь ImapAdapter выглядит следующим образом:

private IntegrationFlow createImapAdapter (Строковый протокол, Строковый хост, Целочисленный порт, Строка inboxFolder, Строка, имя пользователя, Строкапароль, длинный идентификатор кампании, String tenantIdenifier) ​​{IntegrationFlow flow = IntegrationFlows .from (Mail.imapInboundAdapter (imapUrl (протокол, хост, порт, inboxFolder, имя пользователя, пароль)) .javaMailProperties (p -> p.put ("mail.debug", "false")) .searchTermStrategy ((supportFlags, папка) -> {Flags flags = new Flags (Flags.Flag.SEEN); вернуть новый FlagTerm (flags, false);}) .userFlag ("CLC") //требуется для тестового сервера SI - не требуется, если сервер поддерживает / SEEN .headerMapper (новый DefaultMailHeaderMapper ()), e -> e.autoStartup (true) .poller (p -> p.fixedDelay (1000))) .enrichHeaders (s)-> {s.header ("campaign_id", новый StaticHeaderValueMessageProcessor (campaignId.toString ())); s.header ("tenant_identifier", новый StaticHeaderValueMessageProcessor (tenantIdenifie)р));}) .channel ("emailChannel") .get ();

    return flow;
}

, и содержимое сообщения имеет следующий формат (пример):

- 000000000000f8ac18058cc6e3b0 Тип содержимого: text /равнина;charset = "UTF-8"

это содержимое, которое я хочу получить

- 000000000000f8ac18058cc6e3b0 Content-Type: text / html;charset = "UTF-8"

это содержимое, которое я хочу получить

- 000000000000f8ac18058cc6e3b0 -

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...