public OkResponse contact(String alias, MailToShow mailToSend) {
    ValidationResult validate = captchaValidator.validate(mailToSend.getCaptcha());
    if (!validate.isSuccess()) {
      throw new IllegalArgumentException("Rosszul megadott Captcha: " + validate.toString());
    }
    MimeMessage mail = mailSender.createMimeMessage();
    try {
      MimeMessageHelper helper = new MimeMessageHelper(mail, false);

      String body =
          "----- Ez a levél a tilos.hu műsoroldaláról lett küldve-----\n"
              + "\n"
              + "A form kitöltője a "
              + mailToSend.getFrom()
              + " email-t adta meg válasz címnek, de ennek valódiságát nem ellenőriztük."
              + "\n"
              + "-------------------------------------"
              + "\n"
              + mailToSend.getBody();

      helper.setFrom("*****@*****.**");
      helper.setReplyTo(mailToSend.getFrom());
      helper.setSubject("[tilos.hu] " + mailToSend.getSubject());
      helper.setText(body);

      DBObject one = db.getCollection("show").findOne(aliasOrId(alias));
      if (one == null) {
        throw new IllegalArgumentException("No such show: " + alias);
      }
      ShowDetailed detailed = mapper.map(one, ShowDetailed.class);

      detailed
          .getContributors()
          .forEach(
              contributor -> {
                DBObject dbAuthor =
                    db.getCollection("author").findOne(aliasOrId(contributor.getAuthor().getId()));

                if (dbAuthor.get("email") != null) {
                  try {
                    helper.setTo((String) dbAuthor.get("email"));
                  } catch (MessagingException e) {
                    throw new RuntimeException(e);
                  }
                  mailSender.send(mail);
                }
              });
    } catch (Exception e) {
      throw new InternalErrorException("Can't send the email message: " + e.getMessage(), e);
    }
    return new OkResponse("Üzenet elküldve.");
  }
  @Override
  public void publishNotification(final Notification notification) throws PublicationException {
    log.debug(
        "Send mail notification '{}' to {}", notification.getCode(), notification.getRecipient());
    final MimeMessagePreparator mm =
        mimeMessage -> {
          final Language language = Language.RU;
          final MimeMessageHelper msg = new MimeMessageHelper(mimeMessage, false, "UTF-8");

          msg.setSubject(notification.getSubject());
          msg.setFrom(getInternetAddress(notification.getSender(), language));
          msg.setTo(getInternetAddress(notification.getRecipient(), language));

          msg.setBcc(getInternetAddress(Recipient.get(Recipient.MailBox.MONITORING), language));

          final Recipient recipient = notification.getRecipient();
          if (recipient instanceof Recipient.Application) {
            final Recipient.Application application = (Recipient.Application) recipient;
            if (application.getReturnAddress() != null) {
              msg.setReplyTo(getInternetAddress(application.getReturnAddress(), language));
            }
            msg.setText(notification.getMessage(), true);
          } else if (recipient instanceof Recipient.Person) {
            msg.setReplyTo(getInternetAddress(Recipient.get(Recipient.MailBox.SUPPORT), language));

            msg.setText(notification.getMessage(), true);
          } else {
            log.error("There is not processor for recipient {}", recipient);
          }
        };
    try {
      mailSender.send(mm);
    } catch (MailException ex) {
      throw new PublicationException(ex);
    }
  }