2012-11-28 1 views
0

Apache commons email lib를 사용하여 전자 메일을 보내고 있습니다.Apache Commons를 사용하여 이벤트를들을 수 없습니다. 이메일

그러나 연결 및 전송 이벤트를 수신 할 수 없습니다.

email.getMailSession().getTransport().addConnectionListener(this); 
email.getMailSession().getTransport().addTransportListener(this); 

...을 사용하여 이벤트 리스너를 추가했지만 어떤 이벤트도 수신하지 않습니다.

public class MailSendTest implements ConnectionListener, TransportListener{ 
final Email email = new SimpleEmail(); 

public void sendEmail(){ 
    try { 
     email.setHostName("smtp.host.com"); 
     email.setFrom("[email protected]"); 
     email.addTo("[email protected]"); 
     email.setBounceAddress("[email protected]"); 
     email.setSubject("Testing"); 
     email.setMsg("Test Message"); 
     email.setDebug(true); 
     email.setAuthentication("[email protected]", "pass"); 
     email.setSslSmtpPort("465"); 
     email.setSocketTimeout(60000); 

     email.getMailSession().getTransport().addConnectionListener(this); 
     email.getMailSession().getTransport().addTransportListener(this); 

     email.send(); 

    } catch (Exception ex) { 
     JOptionPane.showMessageDialog(null, "Err : "+ex.getMessage()); 
    } 
} 


@Override 
public void opened(ConnectionEvent e) { 
    System.out.println("####Connected to "+ email.getHostName()); 
} 

@Override 
public void disconnected(ConnectionEvent e) { 
    System.out.println("####Disconnected from "+ email.getHostName()); 
} 

@Override... 

}

어떤 도움을 주시면 감사하겠습니다 다음과 같이

내 코드입니다.

답변

0

나는 또한 그렇게 할 수 없다는 것을 알았지 만, 파기를 한 후에 ... 나는 commons 메일이 java mail API (mail.jar)에 의존한다는 것을 알게되었다. 그래서 아파치 commons 메일은 그냥 추상화해야한다. 자바 메일 API를 사용하는 경우 신중하게 수행하십시오.

내가 제안하는 것은이 튜토리얼 here가 Session 객체를 만들고, 그 다음 Transport 객체를 가져 오는 것입니다. 그러면 TransportListener를 첨부 할 수 있습니다.

나는 아직도 위와 같은 방법으로 현재 (이 글을 쓰는 동안)하고 있으며, 나는 그 일을 희망한다! 그런데 this을 사용하여 SMTP의 속성을 정의하십시오.

행운을 빌어 요.