Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring integration 具有自定义标题的spring集成入站电子邮件_Spring Integration_Gmail Imap_Email Headers - Fatal编程技术网

Spring integration 具有自定义标题的spring集成入站电子邮件

Spring integration 具有自定义标题的spring集成入站电子邮件,spring-integration,gmail-imap,email-headers,Spring Integration,Gmail Imap,Email Headers,我有一个spring应用程序,它可以通过GMail收件箱发送电子邮件和读取电子邮件,并处理通过帐户发送但由于无法识别收件人地址而返回的任何未送达邮件 我已经配置好了所有这些,并且可以正常工作,但是我还在出站邮件上设置了一个自定义头,我想在读取返回邮件时检索这个头。调试应用程序表明消息读取正确,但缺少自定义标题值 这是我的配置: <mail:inbound-channel-adapter id="imapAdapter" store-uri="#{mailIntegratio

我有一个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" />

为了简洁起见,我关闭了service activator的输出通道,但系统按预期工作,但在处理消息时,只缺少自定义头

有没有关于如何配置Spring来读取自定义标题的想法


干杯

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

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

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


如果在javamail属性中启用调试
true
,您将在收到消息时在控制台中看到消息(包括所有标题)。

谢谢,我将尝试一下。嘿,Gary,启用了mail.debug后,消息将以X-foo标题显示在我的服务器控制台中。虽然当我使用mailMessageReceiver bean中的断点进行调试时(这是我的代码中与此工作流中的Spring集成交互的第一个点),但传递给我的代码的mimessage没有X-foo头。偶然的机会,我还升级了SpringInt的2个次要版本,从2.2.0升级到2.2.2,但这没有什么区别。我想知道我是否缺少一些Spring配置?Ta:)进一步的调试表明Spring AbstractMailReceiver没有设置FetchProfile标志来检索所有头。我正在调查我是否可以使用Java邮件属性来设置启用此功能,或者可能对ImapMailReceiver进行子类化……看起来这是不可能的。无法配置ImapMailReceiver或AbstractMailReceiver将
IMAPFolder.FetchProfileItem.HEADERS
添加到传递到JavaMail API的获取配置文件中。您知道如何注册自定义bean来覆盖
AbstractMailReceiver.fetchMessages()
?我不知道如何使用int-mail名称空间实现这一点。还有,有没有可能像这样的配置使它成为SpringIntegration3?干杯嗯,这对我来说似乎不是什么问题。我刚刚对gmail进行了测试,收到了一条包含22个标题的消息,其中包括几个
X-*
标题;所有22个头都出现在mimessage(下游组件中的断点)中。只是想澄清一下-如果您在调试日志中看到标题(就在
*7 FETCH(BODY[]{2724}
之后),那么它们已经被提取了-我们只需要弄清楚为什么它们没有进入您的
MimeMessage