Mengelola Lampiran Pesan

Menangani Lampiran di Outlook

Membuat dan Menyimpan File Pesan Outlook (MSG) menjelaskan cara membuat dan menyimpan pesan, serta cara membuat file MSG dengan lampiran. Artikel ini menjelaskan cara mengelola lampiran Microsoft Outlook dengan Aspose.Email. Lampiran dari file pesan diakses dan disimpan ke disk menggunakan the MapiMessage kelas Lampiran properti. The Lampiran properti adalah koleksi tipe MapiAttachmentCollection kelas.

Periksa Jenis Lampiran (Inline atau Reguler)

Lampiran inline dan lampiran reguler melayani tujuan yang berbeda. Lampiran inline terintegrasi secara visual ke dalam pesan email dan biasanya berupa gambar atau file media. Sementara itu, lampiran reguler adalah file terpisah yang dilampirkan pada email dan dapat mencakup berbagai jenis file. The MapiAttachment.IsInline properti dari MapiAttachment kelas mendapatkan nilai yang menunjukkan apakah lampiran adalah inline atau reguler.

Contoh kode berikut mengekstrak dan menampilkan informasi tentang setiap lampiran dalam MapiMessage yang dimuat, termasuk nama tampilan mereka dan apakah mereka merupakan lampiran inline atau tidak.

var message = MapiMessage.Load(fileName);

foreach (var attach in message.Attachments)
{
    Console.WriteLine($"{attach.DisplayName0} : {attach.IsInline)}");
}

Periksa Jenis Lampiran (IsReference)

The MapiAttachment kelas mencakup IsReference properti yang memungkinkan pengembang mengidentifikasi lampiran referensi dalam sebuah pesan. Dengan contoh kode berikut, Anda dapat memeriksa apakah sebuah lampiran adalah lampiran referensi:

foreach (var attachment in msg.Attachments)
{
    if (attachment.IsReference)
    {
        // Process reference attachment
    }
}

Menyimpan Lampiran dari File MSG

Untuk menyimpan lampiran dari file MSG:

  1. Iterasi melalui MapiAttachmentCollection koleksi dan ambil lampiran individu.
  2. Untuk menyimpan lampiran, panggil metode Save() pada kelas MapiAttachment.

Cuplikan kode berikut menunjukkan cara menyimpan lampiran ke disk lokal.

Ekstrak Lampiran dari File MSG Berformat RTF

Untuk pesan yang diformat sebagai RTF, kode berikut dapat digunakan untuk membedakan dan mengekstrak lampiran yang berupa Inline atau muncul sebagai Ikon dalam badan pesan. Cuplikan kode berikut menunjukkan cara Mengidentifikasi dan Mengekstrak lampiran tertanam dari MSG yang diformat sebagai RTF.


var eml = MapiMessage.Load("MSG file with RTF Formatting.msg");

foreach (var attachment in eml.Attachments)
{
    if (IsAttachmentInline(attachment))
    {
        try
        {
            SaveAttachment(attachment, Data.Out/new Guid().ToString());
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

static bool IsAttachmentInline(MapiAttachment attachment)
{
    foreach (var property in attachment.ObjectData.Properties.Values)
    {
        if (property.Name == "\x0003ObjInfo")
        {
            var odtPersist1 = BitConverter.ToUInt16(property.Data, 0);
            return (odtPersist1 & (1 << (7 - 1))) == 0;
        }
    }
    return false;
}

static void SaveAttachment(MapiAttachment attachment, string fileName)
{
    foreach (var property in attachment.ObjectData.Properties.Values)
    {
        if (property.Name == "Package")
        {
            using var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write);
            fs.Write(property.Data, 0, property.Data.Length);
        }
    }
}

Dapatkan Lampiran Pesan Email Bersarang

Lampiran OLE tertanam juga muncul di the MapiMessage kelas koleksi Attachment. Contoh kode berikut mem-parsing file pesan untuk lampiran pesan yang tertanam dan menyimpannya ke disk. The MapiMessage metode statis class FromProperties() dapat membuat pesan baru dari lampiran yang tertanam. Cuplikan kode berikut menunjukkan cara mendapatkan lampiran pesan email bersarang.

Menghapus Lampiran

Perpustakaan Aspose Outlook menyediakan fungsionalitas untuk menghapus lampiran dari file Microsoft Outlook Message (.msg):

  • Panggil metode RemoveAttachments(). Metode ini menerima path file pesan sebagai parameter. Ia diimplementasikan sebagai metode statis publik, sehingga Anda tidak perlu membuat instance objek.

Potongan kode berikut menunjukkan cara menghapus Lampiran.

Anda juga dapat memanggil the MapiMessage metode statis kelas DestroyAttachment(). Ini bekerja lebih cepat daripada RemoveAttachment(), karena metode RemoveAttachment() mem-parsing file pesan.

Menambahkan Lampiran MSG

Pesan Outlook dapat berisi pesan Microsoft Outlook lain dalam lampiran baik sebagai pesan reguler maupun tertanam. The MapiAttachmentCollection menyediakan anggota overload dari metode Add untuk membuat pesan Outlook dengan kedua jenis lampiran.

Tambahkan Lampiran Referensi ke MapiMessages

The ReferenceAttachmentOptions kelas menyederhanakan penambahan lampiran referensi dengan mengenkapsulasi semua properti yang diperlukan dalam satu objek.

Parameter dari ReferenceAttachmentOptions:

  • sharedLink: Tautan berbagi lengkap ke lampiran yang disediakan oleh layanan web hosting file.
  • url: Lokasi file atau URL sumber daya.
  • providerName: Nama penyedia lampiran referensi (mis., Google Drive, Dropbox).
  • Contoh: Menambahkan Lampiran Referensi dengan ReferenceAttachmentOptions
var options = new ReferenceAttachmentOptions(
    "https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
    "https://drive.google.com/drive/my-drive",
    "GoogleDrive");

// Add reference attachment
msg.Attachments.Add("Document.pdf", options);

Menyematkan Pesan sebagai Lampiran

Cuplikan kode berikut menunjukkan cara menyematkan lampiran file MSG ke dalam pesan.

Membaca Pesan Tersemat dari Lampiran

Potongan kode berikut menunjukkan cara membaca pesan tersemat dari lampiran.

Menyisipkan dan Mengganti Lampiran

Aspose.Email API menyediakan kemampuan untuk menyisipkan lampiran pada indeks tertentu di pesan induk. Ini juga menyediakan fasilitas untuk mengganti konten lampiran dengan lampiran pesan lain.

Menyisipkan Lampiran pada Lokasi Tertentu

API Aspose.Email menyediakan kemampuan untuk menyisipkan lampiran MSG ke MSG induk menggunakan metode Insert pada MapiAttachmentCollection MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). Cuplikan kode berikut menunjukkan cara menyisipkan lampiran pada lokasi tertentu.

Mengganti Isi Lampiran

Ini dapat digunakan untuk mengganti konten lampiran tersemat dengan yang baru menggunakan metode Replace. Namun, tidak dapat digunakan untuk menyisipkan lampiran dengan PR_ATTACH_NUM = 4 (misalnya) ke dalam koleksi dengan collection.Count = 2. Potongan kode berikut menunjukkan cara mengganti konten lampiran.

Ganti Nama Lampiran di MapiMessage

Dimungkinkan untuk mengedit nilai properti DisplayName pada lampiran MapiMessage.

var msg = MapiMessage.Load(fileName);
msg.Attachments[0].DisplayName = "New display name 1";
msg.Attachments[1].DisplayName = "New display name 2";

Simpan Lampiran dari Pesan yang Ditandatangani Secara Digital

Aspose.Email API menyediakan kemampuan untuk mendapatkan atau mengatur nilai yang menunjukkan apakah pesan yang ditandatangani jelas akan didekode.