Why and when to perform this task
At times you might need to debug a JavaMail application. One option you can use is turning on the JavaMail debugging feature. With this option, the JavaMail API prints interactions with the mail servers, as well as the properties of the mail session, to the stdout output stream, which is redirected to the SystemOut.log file for the specific application server.
The mail debug feature functions, on a per session basis. To enable the JavaMail debugging feature:
Steps for this task
A sample of the JavaMail debugging output is as follows:
DEBUG: not loading system providers in <java.home>/lib DEBUG not loading optional custom providers file: /META-INF/javamail.providers DEBUG: successfully loaded default providers DEBUG Tables of loaded providers DEBUG: Providers listed by Class Name: {com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]} DEBUG: Providers Listed By Protocol: {imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]} DEBUG: not loading optional address map file: /META-INF/javamail.address.map *** In SessionFactory.getObjectInstance, The default SessionAuthenticator is based on: store_user = john_smith store_pw = abcdef *** In SessionFactory.getObjectInstance, parameters in the new session: mail.store.protocol="imap" mail.transport.protocol="smtp" mail.imap.user="john_smith" mail.smtp.host="smtp.coldmail.com" mail.debug="true" ws.store.password="abcdef" mail.from="john_smith@coldmail.com" mail.smtp.class="com.sun.mail.smtp.SMTPTransport" mail.imap.class="com.sun.mail.imap.IMAPStore" mail.imap.host="coldmail.com" DEBUG: mail.smtp.class property exists and points to com.sun.mail.smtp.SMTPTransport DEBUG SMTP: useEhlo true, useAuth false DEBUG: SMTPTransport trying to connect to host "smtp.coldmail.com", port 25 javax.mail.SendFailedException: Sending failed; nested exception is: javax.mail.MessagingException: Unknown SMTP host: smtp.coldmail.com; nested exception is java.net.UnknownHostException: smtp.coldmail.com at javax.mail.Transport.send0(Transport.java:219) at javax.mail.Transport.send(Transport.java:81) at ws.mailfvt.SendSaveTestCore.runAll(SendSaveTestCore.java:48) at testers.AnyTester.main(AnyTester.java:130)
This sample output illustrates a connection failure to a Simple Mail Transfer Protocol (SMTP) server because a fictitious name, smtp.coldmail.com, is specified as the server name.
The following are tips on how to read the debugging output: