无法使用Apache Commons Email收听事件

时间:2012-11-28 04:08:04

标签: apache-commons-email

我正在使用Apache commons email lib发送电子邮件。

但是,我无法收听连接和传输事件。我使用以下方法添加了事件监听器:

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("from@host.com");
        email.addTo("to@host.com");
        email.setBounceAddress("from@host.com");
        email.setSubject("Testing");
        email.setMsg("Test Message");
        email.setDebug(true);
        email.setAuthentication("from@host.com", "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...

}

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我也发现它无法这样做,但经过一些挖掘...我发现公共邮件依赖于java邮件API(mail.jar),所以apache commons邮件只是抽象应该是什么如果您使用的是java邮件API,请谨慎使用。

我建议遵循本教程here所做的,即创建Session对象,然后从中检索Transport对象......然后您可以附加TransportListener。

我目前仍在以上述方式(写这篇文章时),我希望它的工作! 顺便说一句,使用this定义SMTP的属性。

祝你好运