{
public void run()
{
if (validState())
{
Logger logger = getLogger();
synchronized (sessionLock)
{
createSession();
try
{
MimeMessage message = new MimeMessage(session);
message.setContent(doKeywordExpansion(content), mimeType);
message.setSubject(doKeywordExpansion(subject));
Address from = new InternetAddress(fromAddress, fromName);
message.setFrom(from);
message.setReplyTo(new Address[]{from});
if (toAddresses != null)
{
message.addRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddresses));
}
if (ccAddresses != null)
{
message.addRecipients(Message.RecipientType.CC, InternetAddress.parse(ccAddresses));
}
if (bccAddresses != null)
{
message.addRecipients(Message.RecipientType.BCC, InternetAddress.parse(bccAddresses));
}
Transport transport = session.getTransport("smtp");
if (doLogin)
{
transport.connect(serverHost, serverPort, serverUserName, serverPassword);
}
else
{
transport.connect();
}
message.saveChanges();
if (logger.isEnabledFor(Logger.DEBUG)) logger.debug("Sending message");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
if (logger.isEnabledFor(Logger.DEBUG)) logger.debug("Message sent");
}
catch (Exception e)
{
logger.error("Exception during message sending ", e);
}
}
}
}
}).start();