Quản lý Tệp Đính Kèm Tin Nhắn
Xử Lý Tệp Đính Kèm trong Outlook
Tạo và Lưu Tệp Tin nhắn Outlook (MSG) giải thích cách tạo và lưu tin nhắn, cũng như cách tạo các tệp MSG có đính kèm. Bài viết này giải thích cách quản lý các tệp đính kèm Microsoft Outlook với Aspose.Email. Các tệp đính kèm từ một tệp tin nhắn được truy cập và lưu vào đĩa bằng cách sử dụng MapiMessage lớp Tệp Đính Kèm thuộc tính. The Tệp Đính Kèm thuộc tính là một tập hợp kiểu MapiAttachmentCollection lớp.
Kiểm Tra Loại Tệp Đính Kèm (Nội Tuyến hoặc Thông Thường)
Các tệp đính kèm nội tuyến và thông thường phục vụ các mục đích khác nhau. Các tệp đính kèm nội tuyến được tích hợp trực quan vào tin nhắn email và thường là hình ảnh hoặc tệp media. Trong khi đó, các tệp đính kèm thông thường là các tệp riêng biệt được đính kèm vào email và có thể bao gồm nhiều loại tệp khác nhau. The MapiAttachment.IsInline thuộc tính của MapiAttachment lớp nhận giá trị cho biết đính kèm là nội tuyến hay thông thường.
Mẫu mã dưới đây trích xuất và hiển thị thông tin về mỗi tệp đính kèm trong MapiMessage đã tải, bao gồm tên hiển thị của chúng và việc chúng có phải là tệp đính kèm nội tuyến hay không.
var message = MapiMessage.Load(fileName);
foreach (var attach in message.Attachments)
{
Console.WriteLine($"{attach.DisplayName0} : {attach.IsInline)}");
}
Kiểm Tra Loại Tệp Đính Kèm (IsReference)
Cái MapiAttachment lớp bao gồm IsReference thuộc tính cho phép các nhà phát triển xác định các tệp đính kèm tham chiếu trong một tin nhắn. Với mẫu mã dưới đây, bạn có thể kiểm tra xem một tệp đính kèm có phải là tệp đính kèm tham chiếu hay không:
foreach (var attachment in msg.Attachments)
{
if (attachment.IsReference)
{
// Process reference attachment
}
}
Lưu Đính kèm từ Tệp MSG
Để lưu các đính kèm từ tệp MSG:
- Lặp qua MapiAttachmentCollection bộ sưu tập và lấy các đính kèm riêng lẻ.
- Để lưu các tệp đính kèm, gọi phương thức Save() của lớp MapiAttachment.
Đoạn mã dưới đây cho bạn thấy cách lưu các tệp đính kèm vào ổ đĩa cục bộ.
Trích Xuất Tệp Đính Kèm từ Các Tệp MSG Định Dạng RTF
Đối với các tin nhắn được định dạng dưới dạng RTF, mã dưới đây có thể được sử dụng để phân biệt và trích xuất các tệp đính kèm là Nội Tuyến hoặc xuất hiện dưới dạng Biểu tượng trong phần thân tin nhắn. Đoạn mã dưới đây cho bạn thấy cách Xác định và Trích xuất một tệp đính kèm nhúng từ MSG được định dạng 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);
}
}
}
Lấy Các Tệp Đính Kèm Tin Nhắn Thư Lồng Nhau
Các tệp đính kèm OLE nhúng cũng xuất hiện trong MapiMessage lớp bộ sưu tập Attachment. Ví dụ mã dưới đây phân tích một tệp tin nhắn để tìm các tệp đính kèm tin nhắn nhúng và lưu nó vào đĩa. The MapiMessage phương thức tĩnh FromProperties() của lớp có thể tạo một tin nhắn mới từ tệp đính kèm nhúng. Đoạn mã dưới đây cho bạn thấy cách lấy các tệp đính kèm tin nhắn thư lồng nhau.
Xóa Đính kèm
Thư viện Aspose Outlook cung cấp chức năng xóa tệp đính kèm khỏi các tệp Microsoft Outlook Message (.msg):
- Gọi phương thức RemoveAttachments(). Nó nhận đường dẫn của tệp tin tin nhắn làm tham số. Phương thức này được triển khai dưới dạng public static, vì vậy bạn không cần khởi tạo đối tượng.
Đoạn mã dưới đây cho bạn thấy cách xóa bỏ các tệp đính kèm.
Bạn cũng có thể gọi MapiMessage phương thức tĩnh của lớp DestroyAttachment(). Nó hoạt động nhanh hơn so với RemoveAttachment(), vì phương thức RemoveAttachment() phân tích tệp tin nhắn.
Thêm Đính kèm MSG
Một tin nhắn Outlook có thể chứa các tin nhắn Microsoft Outlook khác trong dạng tệp đính kèm, bao gồm dạng thông thường hoặc nhúng. The MapiAttachmentCollection cung cấp các thành viên quá tải của phương thức Add để tạo tin nhắn Outlook với cả hai loại tệp đính kèm.
Try it out!
Thêm hoặc xóa các tệp đính kèm email với phiên bản miễn phí Aspose.Email Editor App.
Thêm Tệp Đính Kèm Tham Chiếu vào MapiMessages
Cái ReferenceAttachmentOptions lớp đơn giản hoá việc thêm tệp đính kèm tham chiếu bằng cách bao gói tất cả các thuộc tính cần thiết trong một đối tượng duy nhất.
Các Tham Số của ReferenceAttachmentOptions:
- sharedLink: Liên kết chia sẻ đầy đủ cho tệp đính kèm được cung cấp bởi dịch vụ web lưu trữ tệp.
- url: Vị trí tệp hoặc URL tài nguyên.
- providerName: Tên của nhà cung cấp tệp đính kèm tham chiếu (ví dụ: Google Drive, Dropbox).
- Ví dụ: Thêm Tệp Đính Kèm Tham Chiếu với 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);
Nhúng Tin nhắn làm Đính kèm
Đoạn mã dưới đây cho bạn thấy cách nhúng một tệp đính kèm MSG vào một tin nhắn.
Đọc Tin nhắn Nhúng từ Đính kèm
Đoạn mã dưới đây cho bạn thấy cách đọc các tin nhắn nhúng từ đính kèm.
Chèn và Thay Thế Tệp Đính Kèm
Aspose.Email API cung cấp khả năng chèn đính kèm tại chỉ số cụ thể trong tin nhắn cha. Nó cũng cung cấp tiện ích để thay thế nội dung của một đính kèm bằng đính kèm của tin nhắn khác.
Try it out!
Chạy ReplaceAttach dự án ứng dụng đơn giản, và thử các khả năng của Aspose.Email để thay thế tệp đính kèm trong thực tế.
Chèn Đính kèm vào Vị trí Cụ thể
API Aspose.Email cung cấp khả năng chèn một tệp đính kèm MSG vào một MSG cha bằng cách sử dụng phương thức Insert của MapiAttachmentCollection MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). Đoạn mã dưới đây cho bạn thấy cách chèn một tệp đính kèm vào vị trí cụ thể.
Thay thế Nội dung Đính kèm
Điều này có thể được sử dụng để thay thế nội dung tệp đính kèm nhúng bằng các nội dung mới bằng phương thức Replace. Tuy nhiên, không thể dùng để chèn tệp đính kèm với PR_ATTACH_NUM = 4 (ví dụ) vào bộ sưu tập khi collection.Count = 2. Đoạn mã dưới đây cho bạn thấy cách thay thế nội dung tệp đính kèm.
Đổi Tên Tệp Đính Kèm trong MapiMessage
Bạn có thể chỉnh sửa giá trị thuộc tính DisplayName trong các tệp đính kèm MapiMessage.
var msg = MapiMessage.Load(fileName);
msg.Attachments[0].DisplayName = "New display name 1";
msg.Attachments[1].DisplayName = "New display name 2";
Lưu Tệp Đính Kèm từ Các Tin Nhắn Đã Ký Số
Aspose.Email API cung cấp khả năng lấy hoặc đặt giá trị cho biết liệu tin nhắn được ký rõ sẽ được giải mã hay không.