93 lines
2.7 KiB
Java
93 lines
2.7 KiB
Java
//: logging/EmailLogger.java
|
|
// {CompileTimeError}
|
|
// Must be connected to the Internet
|
|
// {Depends: mail.jar,activation.jar}
|
|
import java.util.logging.*;
|
|
import java.io.*;
|
|
import java.util.Properties;
|
|
import javax.mail.*;
|
|
import javax.mail.internet.*;
|
|
|
|
public class EmailLogger {
|
|
private static Logger logger =
|
|
Logger.getLogger("EmailLogger");
|
|
public static void main(String[] args) throws Exception {
|
|
logger.setUseParentHandlers(false);
|
|
Handler conHdlr = new ConsoleHandler();
|
|
conHdlr.setFormatter(new Formatter() {
|
|
@Override
|
|
public String format(LogRecord record) {
|
|
return record.getLevel() + " : "
|
|
+ record.getSourceClassName() + ":"
|
|
+ record.getSourceMethodName() + ":"
|
|
+ record.getMessage() + "\n";
|
|
}
|
|
});
|
|
logger.addHandler(conHdlr);
|
|
logger.addHandler(
|
|
new FileHandler("EmailLoggerOutput.xml"));
|
|
logger.addHandler(new MailingHandler());
|
|
logger.log(Level.INFO,
|
|
"Testing Multiple Handlers", "SendMailTrue");
|
|
}
|
|
}
|
|
|
|
// A handler that sends mail messages
|
|
class MailingHandler extends Handler {
|
|
@Override
|
|
public void publish(LogRecord record) {
|
|
Object[] params = record.getParameters();
|
|
if(params == null) return;
|
|
// Send mail only if the parameter is true
|
|
if(params[0].equals("SendMailTrue")) {
|
|
new MailInfo("bruce@theunixman.com",
|
|
new String[] { "bruce@theunixman.com" },
|
|
"smtp.theunixman.com", "Test Subject",
|
|
"Test Content").sendMail();
|
|
}
|
|
}
|
|
@Override
|
|
public void close() {}
|
|
@Override
|
|
public void flush() {}
|
|
}
|
|
|
|
class MailInfo {
|
|
private String fromAddr;
|
|
private String[] toAddr;
|
|
private String serverAddr;
|
|
private String subject;
|
|
private String message;
|
|
public MailInfo(String from, String[] to,
|
|
String server, String subject, String message) {
|
|
fromAddr = from;
|
|
toAddr = to;
|
|
serverAddr = server;
|
|
this.subject = subject;
|
|
this.message = message;
|
|
}
|
|
public void sendMail() {
|
|
try {
|
|
Properties prop = new Properties();
|
|
prop.put("mail.smtp.host", serverAddr);
|
|
Session session =
|
|
Session.getDefaultInstance(prop, null);
|
|
session.setDebug(true);
|
|
// Create a message
|
|
Message mimeMsg = new MimeMessage(session);
|
|
// Set the from and to address
|
|
Address addressFrom = new InternetAddress(fromAddr);
|
|
mimeMsg.setFrom(addressFrom);
|
|
Address[] to = new InternetAddress[toAddr.length];
|
|
for(int i = 0; i < toAddr.length; i++)
|
|
to[i] = new InternetAddress(toAddr[i]);
|
|
mimeMsg.setRecipients(Message.RecipientType.TO,to);
|
|
mimeMsg.setSubject(subject);
|
|
mimeMsg.setText(message);
|
|
Transport.send(mimeMsg);
|
|
} catch (Exception e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
}
|
|
} ///:~
|