public static void receberEmailImap() throws Exception {
    ArrayList<Item> results = null;
    EmailMessage email = null;

    ClienteEmailCentralServicoDao clienteEmailCentralServicoDao =
        new ClienteEmailCentralServicoDao();
    results = clienteEmailCentralServicoDao.getMails();

    System.out.println("IMAP... LENDO EMAILS");
    System.out.println();

    try {
      for (Item item : results) {
        ItemId itemId = item.getId();
        email = EmailMessage.bind(item.getService(), itemId);

        String texto = email.getBody().toString();
        Source source = new Source(email.getBody().toString());
        String textoFormatado = source.getTextExtractor().toString();
        System.out.println("Mensagem : \n" + texto + " \nFIM da Mensagem ------------");
        DateFormat dateFormat = DateFormat.getTimeInstance();
        Locale br = new Locale("pt", "BR");
        SimpleDateFormat formatarHora = new SimpleDateFormat("hh:mm", br);
        String solicitacao = email.getSubject();
        String corpoEmail = email.getBody().toString(); //

        boolean encontrar = solicitacao.matches(".*Solicitação.*");
        if (encontrar) {
          encontrar = solicitacao.matches(".*[0-9].*");
          if (encontrar) {
            solicitacao = solicitacao.replaceAll("[^0-9]", "");

            SolicitacaoServicoService solicitacaoServicoService =
                (SolicitacaoServicoService)
                    ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null);
            SolicitacaoServicoDTO solicitacaoDto = new SolicitacaoServicoDTO();
            solicitacaoDto.setIdSolicitacaoServico(Integer.parseInt(solicitacao));

            boolean existeSolicitacao =
                solicitacaoServicoService.existeSolicitacaoServico(solicitacaoDto);
            if (existeSolicitacao) {
              OcorrenciaSolicitacaoDTO ocorrenciaDto = new OcorrenciaSolicitacaoDTO();
              OcorrenciaSolicitacaoService ocorrenciaService =
                  (OcorrenciaSolicitacaoService)
                      ServiceLocator.getInstance()
                          .getService(OcorrenciaSolicitacaoService.class, null);
              ocorrenciaDto.setIdSolicitacaoServico(Integer.parseInt(solicitacao));

              Calendar calendar = Calendar.getInstance();
              int hora = calendar.get(Calendar.HOUR_OF_DAY);
              int minuto = calendar.get(Calendar.MINUTE);
              ocorrenciaDto.setDataregistro(UtilDatas.getSqlDate(new java.util.Date()));
              ocorrenciaDto.setHoraregistro(hora + ":" + minuto);
              ocorrenciaDto.setRegistradopor("Email - Automatico");
              ocorrenciaDto.setDescricao(email.getSubject());
              ocorrenciaDto.setOcorrencia(texto);
              ocorrenciaService.create(ocorrenciaDto);
            }
          }
        }
        email.setIsRead(true);
        email.update(ConflictResolutionMode.AlwaysOverwrite);
      }
    } catch (EWSHttpException ex) {
      System.out.println("Teste");
    }

    System.out.println("LEITURA CONCLUIDA");
    System.out.println();

    try {

    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  public static void receberEmailPop() {

    try {

      System.out.println();
      System.out.println("LENDO EMAILS POP...");

      // Verifica qual tipo de provider, se é imap , ou pop/pop3

      ClienteEmailCentralServicoDao clienteEmail = new ClienteEmailCentralServicoDao();
      Message mensagens[] = clienteEmail.getEmail2s();

      MimeMultipart mmp = new MimeMultipart();
      MimeBodyPart mbp1 = new MimeBodyPart();
      MimeBodyPart mbp2 = new MimeBodyPart();

      int contador = 0;
      for (Message message : mensagens) {
        if (!message.isSet(Flags.Flag.SEEN)) {

          String solicitacao = message.getSubject();

          boolean encontrar = solicitacao.matches(".*Solicitação.*");
          /**
           * Verifica se no título do email existe a palavra Solicitação e o número, caso exista,
           * ele vai vincular o email a solicitacao do titulo,
           */
          if (encontrar) {

            encontrar = solicitacao.matches(".*[0-9].*");
            /**
             * Verifica se no título do email possui valor numérico, se possuir, prossegue, senão,
             * encerra
             */
            if (encontrar) {

              /**
               * Retira tudo o que não for numérico, pega os numeros e usa como id da solicitacao de
               * servico
               */
              solicitacao = solicitacao.replaceAll("[^0-9]", "");

              mmp = (MimeMultipart) message.getContent();
              mbp1 = (MimeBodyPart) mmp.getBodyPart(0);
              mbp2 = (MimeBodyPart) mmp.getBodyPart(1);

              System.out.println(
                  "-----------------------------------------------------------------------");
              System.out.println("CONTEÚDO DO EMAIL :" + mbp1.getContent());
              System.out.println("TITULO DO EMAIL : " + message.getSubject());
              System.out.println(
                  "-----------------------------------------------------------------------");
              System.out.println("Contador : " + contador);
              contador++;
              System.out.println();
              System.out.println();
              System.out.println();

              String minutoFormatado = "";

              OcorrenciaSolicitacaoDTO ocorrenciaDto = new OcorrenciaSolicitacaoDTO();
              OcorrenciaSolicitacaoService ocorrenciaService =
                  (OcorrenciaSolicitacaoService)
                      ServiceLocator.getInstance()
                          .getService(OcorrenciaSolicitacaoService.class, null);
              ocorrenciaDto.setIdSolicitacaoServico(Integer.parseInt(solicitacao));
              Calendar calendar = Calendar.getInstance();
              int hora = calendar.get(Calendar.HOUR_OF_DAY);
              int minuto = calendar.get(Calendar.MINUTE);
              ocorrenciaDto.setDataregistro(UtilDatas.getSqlDate(new java.util.Date()));
              if (minuto < 10) {
                minutoFormatado = "0" + String.valueOf(minuto);
                ocorrenciaDto.setHoraregistro(hora + ":" + minuto);
              } else {
                ocorrenciaDto.setHoraregistro(hora + ":" + minuto);
              }

              ocorrenciaDto.setRegistradopor("Email - Automatico");
              ocorrenciaDto.setDescricao(message.getSubject().toString());
              ocorrenciaDto.setOcorrencia(mbp1.getContent().toString());
              SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
              java.sql.Date dataFormatada = UtilDatas.getSqlDate(message.getReceivedDate());
              ocorrenciaDto.setDataregistro(UtilDatas.getSqlDate(new java.util.Date()));
              String data = UtilDatas.formatHoraFormatadaHHMMSSStr(message.getReceivedDate());
              ocorrenciaService.create(ocorrenciaDto);
            }
          }
        }
      }

      System.out.println("THREAD FINALIZADA!!!---------------------");

    } catch (Exception e) {
      System.out.println("###########################################");
      System.out.println("Erro ao executar a Thread");
      System.out.println("###########################################");
      e.printStackTrace();
    }
  }