TransportEvent何时在Java邮件中被触发?

时间:2012-07-16 13:16:51

标签: java email javamail

我试图通过使用侦听器获取已发送消息的Message-Id。 我正在实施 javax.mail.event.TransportListener,其中包含代码示例中给出的具体方法。

它监听javax.mail.event.TransportEvent,它在调用void javax.mail.Transport.sendMessage(.....)时生成。

令我惊讶的是,当我实际发送邮件时,我得不到任何方法被调用.. ???它什么时候被调用?在调用sendMessage(..)??

之后是否需要添加任何等待时间

不是实时发生的吗?

@Override
public void messageDelivered(TransportEvent e)
{
    try {
        System.out.println(e.getMessage().getHeader("Message-Id")[0]);
    } catch (MessagingException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
}

@Override
public void messageNotDelivered(TransportEvent e) 
{
    try {
        System.out.println(e.getMessage().getHeader("Message-Id")[0]);
    } catch (MessagingException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }       
}

@Override
public void messagePartiallyDelivered(TransportEvent e) 
{
    try {
        System.out.println(e.getMessage().getHeader("Message-Id")[0]);
    } catch (MessagingException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }       
}

1 个答案:

答案 0 :(得分:3)

您是否使用用于发送消息的Transport实例注册了侦听器?请记住,静态Transport.send()方法创建了您自己从未见过的传输实例。