use of com.axway.ats.action.objects.model.WrongPackageException in project ats-framework by Axway.
the class MailSender method send.
/**
* Sends a MIME package by invoking the following actions:
*
* <blockquote> 1. Tags the package, this can be later used for IMAP verification<br>
* 2. Sings the package when a signer is specified<br>
* 3. Encrypts the package when a encryptor is specified<br>
* 4. Sends it </blockquote>
*
* @see com.axway.ats.action.model.PackageSender#send(com.axway.ats.action.objects.model.Package)
*/
@Override
@PublicAtsApi
public void send(Package sourcePackage) throws ActionException {
if (!(sourcePackage instanceof MimePackage)) {
throw new WrongPackageException("Cannot send '" + sourcePackage.getClass().getSimpleName() + "' packages");
}
// initialize the SMTP session
initSession();
MimePackage mimePackage = (MimePackage) sourcePackage;
// tag the package
mimePackage.tag();
// then send
final DELIVERY_STATE messageDeliveryState;
try {
log.info("Connect to mail server " + mailHost + " at port " + mailPort);
Object messageSendingMutex = new Object();
MailTransportListener transListener = new MailTransportListener(messageSendingMutex);
transport.addTransportListener(transListener);
transport.connect();
log.info("Sending " + mimePackage.getDescription());
transport.sendMessage(mimePackage.getMimeMessage(), extractAllRecipients(mimePackage));
synchronized (messageSendingMutex) {
/*
* Wait some time for message delivery.
*
* We are either notified by the mail transport listener when the send has finished(successfully or not)
* or we have reached the wait timeout
*/
messageSendingMutex.wait(configurator.getMailTimeout());
}
messageDeliveryState = transListener.getDeliveryState();
transport.close();
transport.removeTransportListener(transListener);
} catch (MessagingException e) {
throw new ActionException("Could not send package", e);
} catch (InterruptedException e) {
throw new ActionException("Could not send package", e);
}
// evaluate the mail send result
if (messageDeliveryState == DELIVERY_STATE.DELIVERED) {
log.info(mimePackage.getDescription() + " " + messageDeliveryState);
} else {
throw new ActionException("Result of sending " + mimePackage.getDescription() + ": " + messageDeliveryState.toString());
}
}
Aggregations