I am trying to get the Message-Id of the sent message by using listeners.
I am implementing
javax.mail.event.TransportListener with concrete methods given in code sample.
It listens to javax.mail.event.TransportEvent which gets generated when void javax.mail.Transport.sendMessage(…..) is called.
To my surprise I get none of the method gets called when I actually send the mail..??? When does it actually get called ? Do I need to add any wait time after calling sendMessage(..)??
Doesn’t it happen in real time ?
@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();
}
}
Did you register your listener with the Transport instance that’s being used to send the message? Remember that the static Transport.send() method creates its own Transport instance that you never see.