0

我有一个 spring 应用程序,它通过 GMail 收件箱发送电子邮件并读取电子邮件,并处理任何已通过该帐户发送但由于无法识别收件人地址而返回的未送达邮件。

我已经完成了所有配置和工作,但我还在出站邮件上设置了一个自定义标头,我想在阅读返回的邮件时检索该标头。调试应用程序显示消息被正确读取,但缺少自定义标头值。

这是我的配置:

<mail:inbound-channel-adapter id="imapAdapter"
        store-uri="#{mailIntegrationProperties['mail.imap.url']}"
        java-mail-properties="mailIntegrationProperties" 
        channel="receiveEmailChannel"
        should-delete-messages="false" 
        should-mark-messages-as-read="true"
        auto-startup="true"
        max-fetch-size="#{mailIntegrationProperties['mail.max.fetch.size']}">
    <int:poller time-unit="SECONDS" fixed-rate="#{mailIntegrationProperties['mail.poller.seconds']}" />
</mail:inbound-channel-adapter>

<int:channel id="receiveEmailChannel" />

<bean id="mailMessageReceiver" class="com.myapp.integration.mail.EmailMessageReceiver" />

<int:service-activator input-channel="receiveEmailChannel" ref="mailMessageReceiver" output-channel="emailEventMessageQueue" method="receive" />

为简洁起见,我已将服务激活器的输出通道关闭,但系统按预期工作,但在处理消息时仅缺少自定义标头。

关于如何配置 Spring 以读取该自定义标头的任何想法?

干杯!

4

1 回答 1

1

我假设您的意思是您在 SMTP 出站邮件上设置了一些“X-foo”标头,并希望在收到的邮件中看到它。

放在上面的消息的有效载荷receiveEmailChannel是接收到的mime消息;没有对标头进行过滤,收到的所有标头都将包含在其中。

如果您没有看到标题,则表示它不在消息中。

如果您在 javamail 属性中打开调试<prop key="mail.debug">true</prop>,您将在控制台中看到收到的消息(包括所有标头)。

于 2013-03-25T13:26:27.300 回答