0

我正在尝试使用侦听器获取已发送消息的 Message-Id。我正在
使用代码示例中给出的具体方法实现 javax.mail.event.TransportListener。

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

令我惊讶的是,当我实际发送邮件时,我没有调用任何方法..??? 它什么时候真正被调用?调用 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();
    }       
}
4

1 回答 1

3

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

于 2012-07-16T20:33:53.607 回答