code: @Override
  	public void send(Message message) throws MessagingException {
  		LOG.info("Sending message...");
  		LOG.debug("{}", message);
  		LOG.debug("Find senders that is able to send the message {}", message);
  		boolean sent = false;
  		for (ConditionalSender sender : senders) {
  			if (sender.supports(message)) {
  				LOG.debug("Sending message {} using sender {}...", message, sender);
  				sender.send(message);
  				LOG.debug("Message {} sent using sender {}", message, sender);
  				sent = true;
  			} else {
  				LOG.debug("Sender {} can't handle the message {}", sender, message);
  			}
  		}
  		if(sent) {
  			LOG.info("Message sent");
  			LOG.debug("{}", message);
  		} else {
  			throw new MessageNotSentException("No sender available to send the message", message);
  		}
  	}
docs: Sends the message. The message can be anything with any content and that
  must be delivered to something or someone.
  
  Ask each sender if it is able to handle the message. Each sender that
  can't handle the message is skipped. Each sender that is able to handle
  it will be called in order to really send the message.
  
  @param message
  the message to send
  @throws MessagingException
  when the message couldn't be sent
  @throws MessageNotSentException
  when no sender could handle the message