package railo.runtime.net.smtp;
import javax.mail.Transport;
import railo.commons.io.SystemUtil;
import railo.runtime.net.smtp.SMTPClient.MimeMessageAndSession;
public final class SMTPSender extends Thread {
private boolean hasSended=false;
private Throwable throwable;
private Object lock;
private String host;
private int port;
private String user;
private String pass;
private MimeMessageAndSession mmas;
public SMTPSender(Object lock, MimeMessageAndSession mmas, String host, int port, String user, String pass) {
this.lock=lock;
this.mmas=mmas;
this.host=host;
this.port=port;
this.user=user;
this.pass=pass;
}
@Override
public void run() {
Transport transport = null;
try {
transport = mmas.session.transport;//SMTPConnectionPool.getTransport(session,host,port,user,pass);
if(user==null)pass=null;
// connect
if(!transport.isConnected())
transport.connect(host,port,user,pass);
mmas.message.saveChanges();
transport.sendMessage(mmas.message, mmas.message.getAllRecipients());
hasSended=true;
}
catch (Throwable t) {
this.throwable=t;
}
finally {
try {SMTPConnectionPool.releaseSessionAndTransport(mmas.session);}catch (Throwable t) {}
SystemUtil.notify(lock);
}
}
/**
* @return the messageExpection
*/
public Throwable getThrowable() {
return throwable;
}
/**
* @return is message sended
*/
public boolean hasSended() {
return hasSended;
}
}