Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

276
Vistas
¿Cómo se busca en una bandeja de entrada con la API administrada de EWS con ColdFusion?

Estamos usando ColdFusion 2016 y estamos usando la API de EWS para conectarnos a Exchange. Logré que el ejemplo de código de la siguiente publicación funcionara, pero no puedo averiguar cómo usar SearchFilter con el método findItems(). ¿Por qué nunca regresa la acción de obtener de cfexchangemail?

 service = createObject("Java", "microsoft.exchange.webservices.data.ExchangeService"); service.init(); version = createObject("Java", "microsoft.exchange.webservices.data.ExchangeVersion"); service.init(version.Exchange2010); credentials = createObject("Java", "microsoft.exchange.webservices.data.WebCredentials"); credentials.init(yourusername, yourpassword); service.setCredentials(credentials); uri = createObject("Java", "java.net.URI"); uri.init("outlook webservices url"); service.setUrl(uri); WellKnownFolderName=createObject("Java","microsoft.exchange.webservices.data.WellKnownFolderName"); result = service.FindItems(service.WellKnownFolderName.Inbox, CreateObject("java", "microsoft.exchange.webservices.data.ItemView").init(100)); for(item in result.getItems(){ // ..loop through each field and store their value // in query object or something... }

Entonces, básicamente, ¿es posible traducir este código Java a Coldfusion?

 ItemView view = new ItemView(10); view.getOrderBy().add(ItemSchema.DateTimeReceived, SortDirection.Ascending); view.setPropertySet(new PropertySet(BasePropertySet.IdOnly, ItemSchema.Subject, ItemSchema.DateTimeReceived)); FindItemsResults<Item> findResults = service.findItems(WellKnownFolderName.Inbox, new SearchFilter.SearchFilterCollection( LogicalOperator.Or, new SearchFilter.ContainsSubstring(ItemSchema.Subject, "EWS"), new SearchFilter.ContainsSubstring(ItemSchema.Subject, "API")), view); service.loadPropertiesForItems(findResults, PropertySet.FirstClassProperties); System.out.println("Total number of items found: " + findResults.getTotalCount()); for (Item item : findResults) { System.out.println(item.getSubject()); System.out.println(item.getBody()); // Do something with the item. }

Actualización de los comentarios:

No puedo averiguar cómo crear una instancia de SearchFilter o SearchFilterCollection . Intenté crear un objeto searchFilter, pero no tiene las propiedades para trabajar. Debo estar debiendo estar perdiendo algo.

 CreateObject("java","microsoft.exchange.webservices.data.Sea‌​rchFilter");
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

El resultado final de trabajo fue:

 folderName = createObject("java", "microsoft.exchange.webservices.data.WellKnownFolderName"); itemView = CreateObject("java","microsoft.exchange.webservices.data.ItemView").init(10,0); folderID = CreateObject("java","microsoft.exchange.webservices.data.FolderId").init( folderName.Inbox, mailBox ); sortDirection = CreateObject("java","microsoft.exchange.webservices.data.SortDirection"); basePropertySet = createObject("java", "microsoft.exchange.webservices.data.BasePropertySet"); propertyset = createObject("java", "microsoft.exchange.webservices.data.PropertySet"); itemSchema = createObject("java", "microsoft.exchange.webservices.data.ItemSchema"); searchFilterCollection = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter$SearchFilterCollection"); logicalOperator = createObject("java", "microsoft.exchange.webservices.data.LogicalOperator"); subString1 = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter$ContainsSubstring").init( itemSchema.Subject, "EWS" ); subString2 = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter$ContainsSubstring").init( itemSchema.Subject, "API" ); searchFilterCollection.add(SubString1); searchFilterCollection.add(SubString2); searchFilterCollection.setLogicalOperator(LogicalOperator.Or); bodyType = createObject("java", "microsoft.exchange.webservices.data.BodyType"); propertyset.add(itemSchema.Subject); propertyset.add(itemSchema.DateTimeReceived); propertyset.setBasePropertySet(basePropertySet.IdOnly); propertyset.setRequestedBodyType(bodyType.HTML); itemView.getOrderBy().add(itemSchema.DateTimeReceived, sortDirection.Ascending); itemView.setPropertySet(propertyset); viewResults = service.findItems(folderID, searchFilterCollection, itemView);
over 4 years ago · Santiago Trujillo Denunciar

0

(No es una respuesta completa, pero es demasiado larga para comentarios)

No es de extrañar... eso es un montón de anidamiento. No tengo esa lib instalada, pero si fuera yo, comenzaría dividiéndola en declaraciones separadas, un new objeto por línea. Comience con el constructor más interno:

 new SearchFilter.ContainsSubstring( ItemSchema.Subject , "API" )

Primero deberá crear una instancia de ItemSchema para tener acceso a la propiedad Subject . Mirando los documentos de C# (no hay javadocs disponibles), la ruta debería ser algo como esto:

 ItemSchema = createObject("java", "microsoft.exchange.webservices.data.ItemSchema");

Después de eso, continúe con la creación del SearchFilter . Fíjate en el período . en el nombre de la clase? La palabra clave new seguida de un nombre de clase, que contiene un punto, generalmente significa que es una clase interna . Las clases internas requieren una sintaxis especial, es decir, ParentClass$InnerClass . Algo como esto debería funcionar:

 APISubString = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter$ContainsSubstring"); writeDump(APISubString );

Si funciona, agregue init() para inicializar el objeto:

 APISubString = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter.ContainsSubstring").init(ItemSchema.Subject, "API");

Luego pasa al siguiente objeto más interno:

 new SearchFilter.ContainsSubstring( ItemSchema.Subject , "EWS" )

y haga espuma, enjuague, repita para los objetos restantes:

 // ItemSchema.Subject is a static value and can be reused EWSSubString = CreateObject("java","microsoft.exchange.webservices.data.SearchFilter.ContainsSubstring").init(ItemSchema.Subject, "EWS");
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda