我正在尝试使用监听器获取已发送消息的 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();
}
}
最佳答案
您是否向用于发送消息的 Transport 实例注册了监听器?请记住,静态 Transport.send() 方法会创建您从未见过的自己的 Transport 实例。
关于java - Java 邮件中的 TransportEvent 何时被触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11505158/