Trabajando con Contactos en Archivo PST

Leyendo Múltiples Contactos en Formato VCard

El siguiente ejemplo de código demuestra cómo leer un archivo VCF, verificar si contiene múltiples contactos, y si es así, cargar los contactos del archivo en una lista de objetos VCardContact. El código utiliza los siguientes métodos:

try (InputStream stream = new FileInputStream("test.vcf")) {
    if (VCardContact.isMultiContacts(stream)) {
        List<VCardContact> contacts = VCardContact.loadAsMultiple(stream, Charset.forName("utf-8"));
    }
}

Agregando Contacto a PST

Crear Nuevo PST, Agregar Subcarpetas y Mensajes mostró cómo crear un archivo PST y agregarle una subcarpeta. Con Aspose.Email puedes agregar un MapiContact a la subcarpeta de Contactos de un archivo PST que hayas creado o cargado. A continuación se detallan los pasos para agregar un MapiContact a un PST:

  1. Crear un objeto MapiContact.
  2. Establecer las propiedades del MapiContact utilizando diferentes constructores y métodos.
  3. Crear un PST usando el método PersonalStorage.create().
  4. Crear una carpeta predefinida (Contactos) en la raíz del archivo PST accediendo a la carpeta raíz y luego llamando al método addMapiMessageItem().

El fragmento de código a continuación muestra cómo crear un MapiContact y luego agregarlo a la carpeta de Contactos de un archivo PST recién creado.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Contact #1
MapiContact contact1 = new MapiContact("Sebastian Wright", "SebastianWright@dayrep.com");
// Contact #2
MapiContact contact2 = new MapiContact("Wichert Kroos", "WichertKroos@teleworm.us", "Grade A Investment");
// Contact #3
MapiContact contact3 = new MapiContact("Christoffer van de Meeberg", "ChristoffervandeMeeberg@teleworm.us", "Krauses Sofa Factory", "046-630-4614");
// Contact #4
MapiContact contact4 = new MapiContact();
contact4.setNameInfo(new MapiContactNamePropertySet("Margaret", "J.", "Tolle"));
contact4.getPersonalInfo().setGender(MapiContactGender.Female);
contact4.setProfessionalInfo(new MapiContactProfessionalPropertySet("Adaptaz", "Recording engineer"));
contact4.getPhysicalAddresses().getWorkAddress().setAddress("4 Darwinia Loop EIGHTY MILE BEACH WA 6725");
contact4.getElectronicAddresses().setEmail1(new MapiContactElectronicAddress("Hisen1988", "SMTP", "MargaretJTolle@dayrep.com"));
contact4.getTelephones().setBusinessTelephoneNumber("(08)9080-1183");
contact4.getTelephones().setMobileTelephoneNumber("(925)599-3355");
// Contact #5
MapiContact contact5 = new MapiContact();
contact5.setNameInfo(new MapiContactNamePropertySet("Matthew", "R.", "Wilcox"));
contact5.getPersonalInfo().setGender(MapiContactGender.Male);
contact5.setProfessionalInfo(new MapiContactProfessionalPropertySet("Briazz", "Psychiatric aide"));
contact5.getPhysicalAddresses().getWorkAddress().setAddress("Horner Strasse 12 4421 SAASS");
contact5.getTelephones().setBusinessTelephoneNumber("0650 675 73 30");
contact5.getTelephones().setHomeTelephoneNumber("(661)387-5382");
// Contact #6
MapiContact contact6 = new MapiContact();
contact6.setNameInfo(new MapiContactNamePropertySet("Bertha", "A.", "Buell"));
contact6.setProfessionalInfo(new MapiContactProfessionalPropertySet("Awthentikz", "Social work assistant"));
contact6.getPersonalInfo().setPersonalHomePage("B2BTies.com");
contact6.getPhysicalAddresses().getWorkAddress().setAddress("Im Astenfeld 59 8580 EDELSCHROTT");
contact6.getElectronicAddresses().setEmail1(new MapiContactElectronicAddress("Experwas", "SMTP", "BerthaABuell@armyspy.com"));
contact6.setTelephones(new MapiContactTelephonePropertySet("06605045265"));
PersonalStorage pst = PersonalStorage.create(dataDir + "MapiContactToPST_out.pst", FileFormatVersion.Unicode);
FolderInfo contactFolder = pst.createPredefinedFolder("Contacts", StandardIpmFolder.Contacts);
contactFolder.addMapiMessageItem(contact1);
contactFolder.addMapiMessageItem(contact2);
contactFolder.addMapiMessageItem(contact3);
contactFolder.addMapiMessageItem(contact4);
contactFolder.addMapiMessageItem(contact5);
contactFolder.addMapiMessageItem(contact6);

Guardar información de contactos desde archivo PST en formato MSG

Este artículo muestra cómo acceder a la información de contactos desde un archivo PST de Microsoft Outlook y guardar los contactos en el disco en formato MSG. Para ello, utiliza las clases PersonalStorage y MapiContact para obtener y mostrar la información de contacto.

Para obtener la información de un contacto:

  1. Cargar el archivo PST en la clase PersonalStorage.
  2. Navegar por la carpeta de Contactos.
  3. Obtener el contenido de la carpeta de Contactos para obtener la colección de mensajes.
  4. Recorrer la colección de mensajes.
  5. Llamar al método PersonalStorage.extractMessage() y luego al método toMapiMessageItem() para obtener la información de contacto en la clase MapiContact.
  6. Usar las propiedades de MapiContact para acceder a la información de contacto.
  7. Llamar al método PersonalStorage.extractMessage() para obtener la información de contacto en la clase MapiMessage.
  8. Llamar al método MapiMessage.save() para guardar el contacto en el disco en formato MSG.

A continuación se presenta un código de muestra que recupera toda la información de los contactos del archivo PST y la guarda en el disco en formato MSG.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
String dataDir = Utils.getSharedDataDir(AccessContactInformationFromPSTFile.class) + "outlook/";
// Load the Outlook PST file
PersonalStorage pst = PersonalStorage.fromFile(dataDir + "SampleContacts.pst");
// Get the Contacts folder
FolderInfo folderInfo = pst.getRootFolder().getSubFolder("Contacts");
// Loop through all the contacts in this folder
MessageInfoCollection messageInfoCollection = folderInfo.getContents();
for (int i = 0; i < messageInfoCollection.size(); i++) {
MessageInfo messageInfo = (MessageInfo) messageInfoCollection.get_Item(i);
// Get the contact information
MapiContact contact = (MapiContact) pst.extractMessage(messageInfo).toMapiMessageItem();
// Display some contents on screen
System.out.println("Name: " + contact.getNameInfo().getDisplayName() + "\n");
// Save to disk in MSG format
if (contact.getNameInfo().getDisplayName() != null) {
MapiMessage message = pst.extractMessage(messageInfo); // Get rid of illegal characters that cannot be used as a file name
String messageName = message.getSubject().replace(":", " ").replace("\\", " ").replace("?", " ").replace("/", " ");
message.save(dataDir + messageName + ".msg");
}
}

Guardar Información de Contactos desde Outlook PST en Disco en formato vCard

Este artículo muestra cómo acceder a la información de contactos desde un archivo PST de Microsoft Outlook y guardar el contacto en disco en formato vCard (VCF). Utiliza las clases PersonalStorage y MapiContact para obtener la información de contacto.

A continuación se detallan los pasos para obtener la información de los contactos:

  1. Cargar el archivo PST en la clase PersonalStorage.
  2. Navegar por la carpeta de Contactos.
  3. Obtener el contenido de la carpeta de Contactos para obtener la colección de mensajes.
  4. Recorrer la colección de mensajes.
  5. Llamar al método PersonalStorage.extractMessage() para obtener la información de contacto en la clase MapiContact.
  6. Usar las propiedades de la clase MapiContact para acceder a la información de contacto.

El programa a continuación carga un archivo PST desde el disco y guarda todos los contactos en formato vCard (VCF). Los archivos VCF pueden ser utilizados en cualquier otro programa que pueda cargar el archivo de contacto estándar vCard. Si abres cualquier archivo VCF en Microsoft Outlook, se verá como el de la captura de pantalla a continuación.

todo:image_alt_text
Figura: Un vCard guardado con Aspose.Email
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// Load the Outlook PST file
PersonalStorage pst = PersonalStorage.fromFile(dataDir + "Outlook.pst");
// Get the Contacts folder
FolderInfo folderInfo = pst.getRootFolder().getSubFolder("Contacts");
// Loop through all the contacts in this folder
MessageInfoCollection messageInfoCollection = folderInfo.getContents();
for (int i = 0; i < messageInfoCollection.size(); i++) {
MessageInfo messageInfo = (MessageInfo) messageInfoCollection.get_Item(i);
// Get the contact information
MapiContact contact = (MapiContact) pst.extractMessage(messageInfo).toMapiMessageItem();
// Display some contents on screen
System.out.println("Name: " + contact.getNameInfo().getDisplayName() + " - " + messageInfo.getEntryIdString());
// Save to disk in vCard VCF format
contact.save(dataDir + "Contacts" + contact.getNameInfo().getDisplayName() + ".vcf", ContactSaveFormat.VCard);
}