我有一个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来读取自定义头的任何想法?
干杯!
我假设你的意思是你正在SMTP出站消息上设置一些'X-foo'标头,并希望在收到的消息上看到它。
放置在receiveEmailChannel
上的消息的有效载荷为收到的mime消息;没有对报头进行过滤,所有收到的报头都将包含在其中。
如果你没有看到标题,这意味着它不在消息中。
如果您在javamail属性中打开调试<prop key="mail.debug">true</prop>
,您将在控制台中看到收到的消息(包括所有标头)。