이메일을 읽고 안정적인 웹 서비스를 제공하는 코드를 작성하려고합니다.Apache Jax-RS가 스프링 통합 메일을 중단합니다.
Gmail (팝업)에서 메일을 읽는 간단한 테스트 파일이 있습니다. 그러나 px.xml에 cxf-rf-frontend-jaxrs를 추가하면 테스트 파일이 작동하지 않는 것으로 보입니다.
누구나 이것을 풀 수 있습니까?
감사합니다. 코드와 내용이 이어집니다.
오류 :
org.springframework.integration.core.MessagingException: failure occurred while receiving from folder
at org.springframework.integration.mail.AbstractMailReceiver.receive(AbstractMailReceiver.java:173)
at mail.GmailManualTester.testPop(GmailManualTester.java:36)
Caused by: java.lang.NullPointerException
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1166)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1135)
at javax.mail.internet.MimeMessage.<init>(MimeMessage.java:182)
at org.springframework.integration.mail.Pop3MailReceiver.deleteMessages(Pop3MailReceiver.java:78)
at org.springframework.integration.mail.AbstractMailReceiver.receive(AbstractMailReceiver.java:164)
테스트 파일/GmailManualTester.java
package mail;
import java.util.Properties;
import javax.mail.Message;
import org.junit.Test;
import org.springframework.integration.mail.Pop3MailReceiver;
public class GmailManualTester {
@Test
public void testPop() throws Exception {
Pop3MailReceiver mail = new Pop3MailReceiver(
"pop3://USERNAME%40DOMAIN:[email protected]:995/INBOX");
Properties props = new Properties();
props.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.pop3.socketFactory.fallback", "false");
mail.setJavaMailProperties(props);
Message[] messages = mail.receive();
System.out.println("Got " + messages.length + " messages");
for (Message message : messages) {
System.out.println("Subject: " + message.getSubject());
}
}
}
과 pom.xml 파일이
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.sf</groupId>
<artifactId>boom</artifactId>
<packaging>war</packaging>
<version>1.0</version>
<name>Example</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mail</artifactId>
<version>1.0.2SR1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<debug>false</debug>
</configuration>
</plugin>
</plugins>
</build>
</project>
SRC/테스트/자바/메일입니다 편집 : ~/.m2 /.../ cxf-rt-frontend-jaxrs-2.3.0.pom 파일에서 모든 종속성을 가져 와서 제외 항목으로 내 자신의 pom.xml에 넣습니다. 그 중 하나를 찾을 때까지 그들을 켜고 끄기 :
나는 이것을 내 POM 파일에 넣으면 메시지를 검색 할 수 있습니다. 만약 내가 그것을 주석, 나는 위에서 오류가 발생합니다. 그래도 이제는 더 깊이 파고들 필요가 있습니다. 이를 제외하면 내 앱의 웹 서비스가 손상 될 수 있습니다.
<exclusion>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-core</artifactId>
</exclusion>
메시지가없는 경우 오류가 발생하지 않습니다 - 대기중인 메시지가있는 경우에만 오류가 발생합니다. – woddle