Trabalhando com Contatos em Arquivo PST

Lendo Múltiplos Contatos em Formato VCard

O trecho de código abaixo demonstra como ler um arquivo VCF, verificar se ele contém múltiplos contatos e, se sim, carregar os contatos do arquivo em uma lista de objetos VCardContact. O código utiliza os seguintes métodos:

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

Adicionando Contato ao PST

Criar Novo PST, Adicionar Subpastas e Mensagens mostrou como criar um arquivo PST e adicionar uma subpasta a ele. Com Aspose.Email, você pode adicionar um MapiContact à subpasta Contatos de um arquivo PST que você criou ou carregou. Abaixo estão as etapas para adicionar um MapiContact a um PST:

  1. Crie um objeto MapiContact.
  2. Defina as propriedades do MapiContact usando diferentes construtores e métodos.
  3. Crie um PST usando o método PersonalStorage.create().
  4. Crie uma pasta pré-definida (Contatos) na raiz do arquivo PST acessando a pasta raiz e, em seguida, chamando o método addMapiMessageItem().

O trecho de código abaixo mostra como criar um MapiContact e, em seguida, adicioná-lo à pasta Contatos de um arquivo PST recém-criado.

// 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);

Salvar informações de contatos do arquivo PST no formato MSG

Este artigo mostra como acessar informações de contato de um arquivo PST do Microsoft Outlook e salvar contatos no disco no formato MSG. Para fazer isso, use as classes PersonalStorage e MapiContact para obter e exibir as informações de contato.

Para obter as informações de um contato:

  1. Carregue o arquivo PST na classe PersonalStorage.
  2. Navegue até a pasta Contatos.
  3. Obtenha o conteúdo da pasta Contatos para obter a coleção de mensagens.
  4. Percorra a coleção de mensagens.
  5. Chame o método PersonalStorage.extractMessage() e, em seguida, o método toMapiMessageItem() para obter as informações de contato na classe MapiContact.
  6. Use as propriedades do MapiContact para acessar as informações de contato.
  7. Chame o método PersonalStorage.extractMessage() para obter as informações de contato na classe MapiMessage.
  8. Chame o método MapiMessage.save() para salvar o contato no disco no formato MSG.

Abaixo está um exemplo de código que recupera todas as informações de contatos do arquivo PST e as salva no disco no 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");
}
}

Salvar Informações de Contatos do PST do Outlook no Disco em formato vCard

Este artigo mostra como acessar informações de contato de um arquivo PST do Microsoft Outlook e salvar o contato no disco em formato vCard (VCF). Ele usa as classes PersonalStorage e MapiContact para obter as informações de contato.

Abaixo estão as etapas para obter as informações de contatos:

  1. Carregue o arquivo PST na classe PersonalStorage.
  2. Navegue até a pasta Contatos.
  3. Obtenha o conteúdo da pasta Contatos para obter a coleção de mensagens.
  4. Percorra a coleção de mensagens.
  5. Chame o método PersonalStorage.extractMessage() para obter as informações de contato na classe MapiContact.
  6. Use as propriedades da classe MapiContact para acessar as informações de contato.

O programa abaixo carrega um arquivo PST do disco e salva todos os contatos em formato vCard (VCF). Os arquivos VCF podem ser usados em qualquer outro programa que possa carregar o arquivo de contato padrão vCard. Se você abrir qualquer arquivo VCF no Microsoft Outlook, ele se parecerá com o da captura de tela abaixo.

todo:image_alt_text
Figura: Um vCard salvo com 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);
}