Buat PST Baru, Tambahkan Sub-folder dan Pesan
Selain mem-parsing file PST yang ada, Aspose.Email menyediakan cara untuk membuat file PST dari awal. Artikel ini menunjukkan cara membuat file PST Outlook dan menambahkan subfolder ke dalamnya.
- Membuat file PST baru.
- Mengubah kelas Kontainer folder.
- Tambah Pesan Bulk dengan Kinerja yang Ditingkatkan
Gunakan PersonalStorage kelas untuk membuat file PST di lokasi tertentu pada disk lokal. Untuk membuat file PST dari awal:
- Buat PST menggunakan PersonalStorage.create() metode.
- Tambahkan subfolder di root file PST dengan mengakses folder Root dan kemudian memanggil the addSubFolder() metode.
Potongan kode berikut menunjukkan cara membuat file PST dan menambahkan subfolder bernama Inbox.
// Create new PST
try (PersonalStorage pst = PersonalStorage.create(path, FileFormatVersion.Unicode)) {
// Add new folder "Test"
pst.getRootFolder().addSubFolder("Inbox");
}
Buat PST dengan Ukuran lebih dari 2Gb menggunakan OutputStream
Pengguna Aspose.Email dapat mengoptimalkan cache internal PST menggunakan konstruktor PersonalStorage:
- blockSize - Ukuran blok optimal untuk memperluas buffer cache (dalam byte).
PersonalStorage create(OutputStream stream, int blockSize, /*FileFormatVersion*/int version)
Kurangi ukuran pesan dan ukuran file PST yang dibuat
Aspose.Email menawarkan kemampuan untuk mengompresi konten body, yang dapat membantu mengurangi ukuran pesan. Ini sangat berguna saat mengirim pesan besar atau ketika berhadapan dengan batasan bandwidth atau penyimpanan. Untuk tujuan ini, perpustakaan menyediakan parameter kompresi yang termasuk dalam metode berikut:
- MapiMessageItemBase.setBodyContent(String content, /BodyContentType/int contentType, boolean compression) - Mengatur konten body.
- MapiMessageItemBase.setBodyRtf(String content, boolean compression) - Mendapatkan atau mengatur teks pesan yang diformat RTF.
Potongan kode di bawah ini menunjukkan cara menggunakan Kompresi RTF saat mengatur isi pesan MAPI:
MapiMessage msg = new MapiMessage("from@doamin.com", "to@domain.com", "subject", "body");
// set the html body and keep it compressed
// this will reduce the message size
msg.setBodyContent(htmlBody, BodyContentType.Html, true);
Buat PersonalStorage berdasarkan Aliran SeekableByteChannel
Aspose.Email untuk Java memungkinkan bekerja dengan file Personal Storage (PST) menggunakan java.nio.channels. Ini memungkinkan Anda membuat instance PersonalStorage menggunakan aliran SeekableByteChannel. Potongan kode berikut menunjukkan cara membuat instance PersonalStorage berdasarkan aliran FileChannel, menambahkan subfolder bernama "messageFolder" ke folder root, dan mengimpor pesan dari file dalam direktori "messageFolder":
try (RandomAccessFile raf = new RandomAccessFile("test.pst", "rw")) {
FileChannel channel = raf.getChannel();
try (PersonalStorage pst = PersonalStorage.create(channel, FileFormatVersion.Unicode)) {
FolderInfo messageFolder = pst.getRootFolder().addSubFolder("messageFolder");
for (File f : new File("messageFolder").listFiles()) {
messageFolder.addMessage(MapiMessage.load(f.getAbsolutePath()));
}
}
}
Mengubah Kelas Kontainer Folder
Kadang-kadang diperlukan mengubah kelas folder. Contoh umum adalah ketika pesan dengan tipe berbeda (janji, pesan, dll.) ditambahkan ke folder yang sama. Dalam kasus tersebut, kelas folder perlu diubah untuk semua elemen di dalam folder agar ditampilkan dengan benar. Potongan kode berikut menunjukkan cara mengubah kelas kontainer folder dalam PST untuk tujuan ini.
try (PersonalStorage pst = PersonalStorage.fromFile("PersonalStorage1.pst")) {
FolderInfo folder = pst.getRootFolder().getSubFolder("Inbox");
folder.changeContainerClass("IPF.Note");
}
Tambahkan Pesan Bulk dengan Kinerja yang Ditingkatkan
Menambahkan pesan secara individu ke PST berarti lebih banyak operasi I/O ke disk dan dapat memperlambat kinerja. Untuk kinerja yang lebih baik, pesan dapat ditambahkan ke PST dalam mode bulk untuk meminimalkan operasi I/O. the addMessages(Iterable
Tambah Pesan dari PST Lain
Untuk menambahkan pesan dari PST lain, gunakan the FolderInfo.enumerateMapiMessages() metode yang mengembalikan Iterable<MapiMessage>:
try (PersonalStorage srcPst = PersonalStorage.fromFile("source.pst", false)) {
try (PersonalStorage destPst = PersonalStorage.fromFile("destination.pst")) {
// Get the folder by name
FolderInfo srcFolder = srcPst.getRootFolder().getSubFolder("SomeFolder");
FolderInfo destFolder = destPst.getRootFolder().getSubFolder("SomeFolder");
destFolder.MessageAdded.add(new MessageAddedEventHandler() {
// Handles the MessageAdded event.
public void invoke(Object sender, MessageAddedEventArgs e) {
System.out.println("Added: " + e.getEntryId());
}
});
destFolder.addMessages(srcFolder.enumerateMapiMessages());
}
}
Tambah Pesan dari Direktori
Untuk menambahkan pesan dari direktori, buat the getMessages(String pathToDir) metode yang mengembalikan Iterable<MapiMessage>:
// Read messages from directory.
static Iterable<MapiMessage> getMessages (String pathToDir)
{
return Arrays.stream(listDirectory(pathToDir, "*.msg"))
.map(MapiMessage::load).collect(Collectors.toList());
}
try ( PersonalStorage pst = PersonalStorage.fromFile("storage.pst")) {
FolderInfo folder = pst.getRootFolder().getSubFolder("SomeFolder");
folder.MessageAdded.add(new MessageAddedEventHandler() {
// Handles the MessageAdded event.
public void invoke(Object sender, MessageAddedEventArgs e) {
System.out.println("Added: " + e.getEntryId());
}
});
folder.addMessages(getMessages("MessageDirectory"));
}