Post by Daniel RindtPost by Chris BurdessThe PrintStream(File) constructor specifically says that it won't
flush the underlying stream. You will need to call flush manually on
that PrintStream, or use the OutputStream constructor.
=== 8< ===
Session session = Session.getInstance(props, auth);
session.setDebug(true);
PrintStream ps = null;
try {
ps = new PrintStream("/tmp/classpathx-mail.out");
session.setDebugOut(ps);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(senderAddress));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
recipientsAddress, false));
msg.setSubject(subject);
msg.setText(text);
msg.saveChanges();
Transport.send(msg);
} catch (Exception e) {
e.printStackTrace();
}
ps.flush();
ps.close();
=== 8< ===
I got nothing in the file, its just zero bytes. Thanks for further help.
I amended your code and got it to work:
Session session = Session.getInstance(props, auth);
session.setDebug(true);
OutputStream fos = null;
try {
fos = new FileOutputStream("classpathx-mail.out");
PrintStream ps = new PrintStream(fos);
session.setDebugOut(ps);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(senderAddress));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
recipientsAddress, false));
msg.setSubject(subject);
msg.setText(text);
msg.saveChanges();
Transport.send(msg);
} catch (Exception e) {
e.printStackTrace();
}
//fos.close();
Note that if you close the FileOutputStream at the end you won't get any output. This is down to some weirdness in exactly why/how/when PrintStreams get flushed, which I'm afraid I don't understand myself, but it's not a problem in the logging as far as I can see (which as I said simply uses the java.util.logging mechanism. If you find any way to shed any light on what's happening there please share it.
Regards
--
Chris Burdess