当前位置: 首页 > 知识库问答 >
问题:

使用Spring integration从imap读取电子邮件不起作用

夹谷晋
2023-03-14

我在试一个例子。在本例中,我们提到了使用spring-integration 2.0.3,但是我得到了一个NullPointerExpetion,为了解决这个问题,我遵循了这里提到的内容。但是如果我使用Spring-Integration2.1,那么我认为它需要Spring3.0。

问题:Spring2.5版本和spring-integration是否可以使用从IMAP读取电子邮件?

以下是我的项目中设置的maven依赖项:

<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring</artifactId>
        <version>2.5.6</version>
    </dependency>
...
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-core</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.integration</groupId>
    <artifactId>spring-integration-mail</artifactId>
    <version>2.1.3.RELEASE</version>
</dependency>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mail="http://www.springframework.org/schema/integration/mail"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
    http://www.springframework.org/schema/integration/mail
    http://www.springframework.org/schema/integration/mail/spring-integration-mail-2.1.xsd 
    http://www.springframework.org/schema/util 
    http://www.springframework.org/schema/util/spring-util-2.0.xsd">


    <util:properties id="javaMailProperties">
    <prop key="mail.imap.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
    <prop key="mail.imap.socketFactory.fallback">false</prop>
    <prop key="mail.store.protocol">imaps</prop>
    <prop key="mail.debug">false</prop>
</util:properties>

<mail:inbound-channel-adapter id="imapAdapter"
                                  store-uri="imaps://<username>:<password>@imap.googlemail.com:993/INBOX"                                    
                                  channel="recieveEmailChannel"                                         
                                  should-delete-messages="false"
                                  should-mark-messages-as-read="true"                                     
                                  auto-startup="true"
                                  java-mail-properties="javaMailProperties">
    <int:poller fixed-delay="5" time-unit="SECONDS"/>
</mail:inbound-channel-adapter>

<int:channel id="recieveEmailChannel">        
    <int:interceptors>
        <int:wire-tap channel="logger"/>
    </int:interceptors>
</int:channel>

<int:logging-channel-adapter id="logger" level="DEBUG"/>

<int:service-activator input-channel="recieveEmailChannel" ref="emailReceiverService" method="receive"/>

<bean id="emailReceiverService" class="com.mycompany.DefaultEmailReceiverUtilService">
</bean>

EmailNotificationTest.java

public class EmailNotificationTest extends
    AbstractDependencyInjectionSpringContextTests

{

public static final String SOURCE_VERSION_ID = "$Id$";

    //Who ever wants to run this testcase ,Please uncomment this method
   protected String[] getConfigLocations()
    {
         return new String[]
        { "classpath:META-INF/spring/component.xml" };
    }

public void testSimpleEmailNotification()
{

}
}

如果运行testcase,则会收到以下异常:

org.springframework.beans.factory.beanDefinitionStoreException:从类路径资源[meta-inf/spring/component.XML]解析XML文档时出现意外异常;嵌套异常为java.lang.NoClassDeffounder错误:org/springframework.beans.factory.xml.xmlbeandefinitionreader.doloadbeandefinition(xmlbeandefinitionreader.java:420)在org.springframework.beans.factory.xml.xmlbeandefinitionreader.loadbeandefinition(xmlbeandefinitionreader.342)在Org.SpringFramework.Test.AbstractSinglePringContextTests.CreateApplicationContext(AbstractSinglePringContextTests.java:198)位于Org.SpringFramework.Test.AbstractSinglePringContextTests.LoadContextLocations(AbstractSinglePringContextTests.179)位于Org.SpringFramework.Test.AbstractSinglePringContextTests.LoadContextLocations(AbstractSinglePringContextTests.158)位于

共有1个答案

秦永望
2023-03-14

我没有找到一个简单的Spring集成-->Spring版本表。以下是您可以做的:

  • 转到https://repository.jboss.org/nexus/index.html#nexus-search;quick~spring-integration-core
  • 选择任何版本
  • 转到右下方容器中的“Maven Dependency”选项卡
  • 单击“解析”链接

您将立即看到需要哪个Spring版本。例如,在Spring Integration 2.0.0中,您将看到它依赖于Spring 3.0.5。

 类似资料:
  • 我一直试图获取电子邮件正文与imap_fetchbody($stream,$msgno,$选项),但没有成功。 然后我尝试使用imap_fetchstructure($stream,$msgno),并使用各自的子类型手动解码每种类型,如:- 对于前两个,我可以用这样的东西来解码 但说到混合,我要么不知道,要么我该怎么办,要么我在哪里犯错。

  • 问题内容: 我正在尝试在JavaMail API的帮助下通过IMAP访问来自Gmail帐户的电子邮件。我想知道为什么代码对一个电子邮件帐户有效,而对另一个电子邮件帐户无效。 我可以访问两个电子邮件帐户的文件夹。但是对于其中一个电子邮件帐户,无法访问其他文件夹,例如,它将引发异常。有人可以解释出什么问题了吗? 先感谢您。 这是代码: 问题答案: 是否有一个帐户使用非英语用户界面? Gmail文件夹名

  • 如何在数据库中存储该电子邮件的唯一ID。 我尝试了$概述=imap_fetch_overview($inbox,$email_number,0);我收到了一堆数字,但问题是当其中一封电子邮件被删除时,数字会发生变化。 如何正确存储?MD5消息还是什么? 基本上,我试图在我的个人网络应用程序上接收电子邮件,在那里我可以管理和访问我自己的电子邮件。它使用imap调用gmail。 无论如何,我可以在哪里

  • IM工作在一个小部件,显示未读电子邮件计数的Gmail和其他电子邮件帐户设置在智能手机。我使用谷歌邮件API为Gmail和它的作品查找,但我没有得到如何与正常的电子邮件应用程序的工作。 我尝试使用帐户管理器获取登录凭据并自己检索信息,但它没有运行,因为我无法获取任何密码。只需验证令牌。我在谷歌上找不到任何关于如何使用普通电子邮件帐户的解决方案,这些帐户不是来自谷歌邮件。 更新:我试图获得密码与此功

  • 我正在为IMAP服务器编程,但遇到了一个问题:电子邮件来自哪里? 我一直认为事件的基本过程是: 发送方客户端使用SMTP协议向SMTP服务器(主机A)发送电子邮件 这让我想知道:电子邮件是如何从接受SMTP的服务器发送到提供服务的IMAP服务器的?他们有协议吗?他们会把它放在目录里吗? 我见过目录的用法——每个用户有一个文件——它似乎不适合大型用户群。当两个进程同时读/写数据时,它不会也会引起问题

  • 问题内容: 我需要从Gmail检索未读邮件。我正在使用Java Mail API。默认情况下,此API从最早的邮件检索到最新的邮件。但是我需要先检索最近的邮件。可能吗?提前致谢。 问题答案: 这是例子。不要忘记在类路径中添加javax.mail。