我试图通过使用侦听器获取已发送消息的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();
}
}
答案 0 :(得分:3)
您是否使用用于发送消息的Transport实例注册了侦听器?请记住,静态Transport.send()方法创建了您自己从未见过的传输实例。