Работа с контактами в файле PST

Чтение нескольких контактов в формате VCard

Ниже приведен образец кода, который демонстрирует, как прочитать файл VCF, проверить, содержит ли он несколько контактов, и, если да, загрузить контакты из файла в список объектов VCardContact. Код использует следующие методы:

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

Добавление контакта в PST

Создание нового PST, добавление подпапок и сообщений показало, как создать файл PST и добавить к нему подпапку. С помощью Aspose.Email вы можете добавить MapiContact в подпапку Контакты файла PST, который вы создали или загрузили. Ниже приведены шаги для добавления MapiContact в PST:

  1. Создайте объект MapiContact.
  2. Установите свойства MapiContact с помощью различных конструкторов и методов.
  3. Создайте PST с помощью метода PersonalStorage.create().
  4. Создайте предварительно заданную папку (Контакты) в корне файла PST, получив доступ к корневой папке, а затем вызвав метод addMapiMessageItem().

Ниже приведен фрагмент кода, который показывает, как создать MapiContact и затем добавить его в папку Контакты нового файла PST.

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

Сохранение информации о контактах из файла PST в формате MSG

В этой статье показано, как получить информацию о контакте из файла Microsoft Outlook PST и сохранить контакты на диск в формате MSG. Для этого используйте классы PersonalStorage и MapiContact, чтобы получить и отобразить информацию о контакте.

Чтобы получить информацию о контакте:

  1. Загрузите файл PST в классе PersonalStorage.
  2. Просмотрите папку Контакты.
  3. Получите содержимое папки Контакты, чтобы получить коллекцию сообщений.
  4. Переберите коллекцию сообщений.
  5. Вызовите метод PersonalStorage.extractMessage() и затем метод toMapiMessageItem() чтобы получить информацию о контакте в классе MapiContact.
  6. Используйте свойства MapiContact для доступа к информации о контакте.
  7. Вызовите метод PersonalStorage.extractMessage() чтобы получить информацию о контакте в классе MapiMessage.
  8. Вызовите метод MapiMessage.save() для сохранения контакта на диск в формате MSG.

Ниже приведен пример кода, который извлекает всю информацию о контактах из файла PST и сохраняет ее на диск в формате 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");
}
}

Сохранение информации о контактах из Outlook PST на диск в формате vCard

В этой статье показано, как получить информацию о контакте из файла Microsoft Outlook PST и сохранить контакт на диск в формате vCard (VCF). Она использует классы PersonalStorage и MapiContact для получения информации о контакте.

Ниже приведены шаги для получения информации о контактах:

  1. Загрузите файл PST в классе PersonalStorage.
  2. Просмотрите папку Контакты.
  3. Получите содержимое папки Контакты для получения коллекции сообщений.
  4. Переберите коллекцию сообщений.
  5. Вызовите метод PersonalStorage.extractMessage() для получения информации о контакте в классе MapiContact.
  6. Используйте свойства класса MapiContact для доступа к информации о контакте.

Программа ниже загружает файл PST с диска и сохраняет все контакты в формате vCard (VCF). Файлы VCF затем можно использовать в любой другой программе, которая может загружать стандартные файлы контактов vCard. Если вы откроете любой файл VCF в Microsoft Outlook, он будет выглядеть как на скриншоте ниже.

todo:image_alt_text
Рисунок: vCard, сохраненная с помощью 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);
}