/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.mail;
import java.util.concurrent.Future;
/**
* Service used for sending e-mails. The SMTP server configuration is done via the external bundle's configuration.
*
* @author Tobias Rodehutskors
*/
public interface MailService {
/**
* Asynchronously sends the given {@link Mail} through the configured mail server.
*
* @param mail object to send.
* @param listener A {@link MailDispatchResultListener} which informs the caller about the state of the mail dispatch.
* @return Returns a future as a handle of the asynchronous task. The future returns either after a successful mail dispatch or if there
* is no more hope for a successful delivery. If this future is canceled, the {@link MailDispatchResultListener} will receive a
* {@link MailDispatchResult.FAILURE} result.
*/
Future<?> sendMail(Mail mail, MailDispatchResultListener listener);
/**
* Synchronous call to check if the MailService is properly configured.
*
* @return False, if there is no mail configuration or the configuration is invalid; True, otherwise.
*/
boolean isConfigured();
}