Quản lý Tin nhắn Outlook
Lưu Email dưới Dạng HTML
Aspose.Email cho phép lưu tài nguyên email với đường dẫn tương đối khi xuất tin nhắn sang định dạng HTML. Tính năng này cung cấp độ linh hoạt cao hơn trong cách liên kết tài nguyên trong tệp HTML đầu ra, giúp dễ dàng chia sẻ và hiển thị email đã lưu trên các hệ thống khác nhau. Để lưu tài nguyên với đường dẫn tương đối, sử dụng HtmlSaveOptions.UseRelativePathToResources thuộc tính. Giá trị mặc định của thuộc tính là false (tài nguyên được lưu với đường dẫn tuyệt đối). Khi đặt thành true, tài nguyên được lưu với đường dẫn tương đối.
Các tệp HTML có đường dẫn tương đối dễ di chuyển hơn và có thể được xem đúng cách bất kể cấu trúc thư mục của môi trường lưu trữ. Bạn có thể lựa chọn giữa đường dẫn tuyệt đối và tương đối tùy theo yêu cầu. Bạn có thể định nghĩa các đường dẫn tùy chỉnh cho tài nguyên bằng cách sử dụng ResourceHtmlRendering sự kiện.
Đoạn mã sau trình bày cách lưu email với đường dẫn tương đối mặc định tới tài nguyên:
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = true
};
msg.Save(Path.Combine("target_files"), htmlSaveOptions);
Trong trường hợp này, các tài nguyên sẽ được lưu trong thư mục [html file name]_files, cùng đường dẫn với tệp .html và HTML sẽ tham chiếu các tài nguyên qua các đường dẫn tương đối.
Mẫu mã dưới đây trình bày cách lưu với đường dẫn tuyệt đối tới tài nguyên:
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = false
};
msg.Save(Path.Combine("target_files"), htmlSaveOptions);
Giống như trong trường hợp đầu tiên, các tài nguyên sẽ được lưu trong thư mục [html file name]_files theo mặc định, nhưng HTML sẽ tham chiếu tài nguyên bằng các đường dẫn tuyệt đối.
Bằng cách sử dụng ResourceHtmlRendering sự kiện, bạn có thể đặt đường dẫn tài nguyên tùy chỉnh dưới dạng tương đối hoặc tuyệt đối. Khi tùy chỉnh đường dẫn với ResourceHtmlRendering trình xử lý sự kiện, và vì UseRelativePathToResources được đặt thành true, bạn nên gán một đường dẫn tương đối tới PathToResourceFile thuộc tính để đảm bảo tham chiếu đúng.
Đoạn mã sau trình bày cách tùy chỉnh đường dẫn tương đối bằng sự kiện ResourceHtmlRendering
var msg = MapiMessage.Load(sourceFileName);
var htmlSaveOptions = new HtmlSaveOptions
{
ResourceRenderingMode = ResourceRenderingMode.SaveToFile,
UseRelativePathToResources = true
};
htmlSaveOptions.ResourceHtmlRendering += (o, args) =>
{
if (o is AttachmentBase attachment)
{
// Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
args.PathToResourceFile = $@"images\{attachment.ContentType.Name}";
}
};
msg.Save(Path.Combine(targetPath, "A Day in the Park.html"), htmlSaveOptions);
Chuyển Đổi MSG sang Thông Điệp MIME
Aspose.Email API cung cấp khả năng chuyển đổi tệp MSG sang tin MIME bằng cách sử dụng ToMailMessage phương thức.
Đặt Thời Gian Chờ cho Việc Chuyển Đổi và Tải Tin Nhắn
Các tính năng sau sẽ cho phép bạn đặt thời gian chờ bằng milisecond cho quá trình chuyển đổi và tải:
-
MailConversionOptions.Timeout thuộc tính - Giới hạn thời gian bằng miliseconds khi chuyển đổi một tin nhắn.
-
MailConversionOptions.TimeoutReached - Bị ném ra nếu thời gian hết hạn trong khi chuyển đổi sang MailMessage.
-
MsgLoadOptions.Timeout - Giới hạn thời gian tính bằng mili giây khi chuyển đổi một tin nhắn.
-
MsgLoadOptions.TimeoutReached - Bị ném ra nếu thời gian hết hạn trong khi chuyển đổi sang MailMessage.
Mẫu mã dưới đây sẽ cho bạn thấy cách đặt thời gian chờ khi chuyển đổi tin nhắn:
var options = new MailConversionOptions();
// Set the timeout to 5 seconds
options.Timeout = 5000;
options.TimeoutReached += (object sender, EventArgs args) =>
{
string subj = (sender as MailMessage).Subject;
// Set a flag indicating the timeout was reached
isTimedOut = true;
};
var mailMessage = mapiMessage.ToMailMessage(options);
Chuyển Đổi MSG sang EML Giữ Phần Thân RTF
Việc chuyển đổi tệp MSG sang EML giữ nguyên phần thân RTF có thể thực hiện bằng hai cách:
-
sử dụng MsgLoadOptions.PreserveRtfContent thuộc tính của MsgLoadOptions class;
-
sử dụng MailConversionOptions.PreserveRtfContent thuộc tính của MailConversionOptions class;
Cả hai thuộc tính đều lấy hoặc đặt giá trị chỉ ra có nên giữ phần thân rtf trong MailMessage hay không.
Các đoạn mã sau đây cho thấy cách chuyển đổi tệp MSG sang EML và giữ nguyên phần thân RTF:
var loadOptions = new MsgLoadOptions
{
PreserveRtfContent = true
};
var eml = MailMessage.Load("my.msg", loadOptions);
var conversionOptions = new MailConversionOptions
{
PreserveRtfContent = true
};
var msg = MapiMessage.Load("my.msg");
var eml = msg.ToMailMessage(conversionOptions);
Xử Lý Tệp Mẫu Outlook (.OFT)
Mẫu Outlook rất hữu ích khi bạn muốn gửi lại cùng một email nhiều lần. Thay vì chuẩn bị tin nhắn từ đầu mỗi lần, trước tiên, chuẩn bị tin nhắn trong Outlook và lưu nó dưới dạng Mẫu Outlook (OFT). Sau đó, bất cứ khi nào bạn cần gửi tin nhắn, bạn có thể tạo nó từ mẫu, tiết kiệm thời gian viết lại cùng nội dung trong phần thân hoặc tiêu đề, thiết lập định dạng và vân vân. Aspose.Email’s MailMessage lớp có thể được sử dụng để tải và đọc tệp mẫu Outlook (OFT). Khi mẫu Outlook đã được tải trong một thể hiện của MailMessage lớp, bạn có thể cập nhật người gửi, người nhận, nội dung, tiêu đề và các thuộc tính khác. Sau khi cập nhật các thuộc tính:
- Gửi email bằng cách sử dụng SmtpClient lớp hoặc
- Lưu tin nhắn dưới dạng MSG và thực hiện các cập nhật/kiểm tra tiếp theo bằng Microsoft Outlook.
Trong các mẫu mã dưới đây, chúng tôi:
- Tải mẫu bằng cách sử dụng MailMessage lớp.
- Cập nhật một số thuộc tính.
- Lưu tin nhắn ở định dạng MSG.
Đoạn mã sau cho bạn thấy cách tải tệp OFT, cập nhật tin nhắn và lưu nó ở định dạng MSG.
Lưu Tệp MSG dưới Dạng Mẫu
Đoạn mã dưới đây cho bạn thấy cách lưu tệp MSG outlook dưới dạng mẫu.
Xác định Loại Tin nhắn MAPI (OFT hoặc MSG)
Khi tải đối tượng MapiMessage từ tệp, bạn có thể cần xác định xem tin nhắn đã tải là tệp mẫu hay tệp email thông thường. Bằng cách sử dụng IsTemplate thuộc tính của MapiMessage lớp, bạn có thể phát hiện chính xác xem một email có phải là mẫu hay không. Chức năng này có thể có giá trị khi xử lý và xử lý các loại tệp email khác nhau trong ứng dụng và hệ thống.
Ví dụ mã dưới đây minh họa cách xác định một MapiMessage là OFT hay MSG:
var msg = MapiMessage.Load("message.msg");
var isOft = msg.IsTemplate; // returns false
var msg = MapiMessage.Load("message.oft");
var isOft = msg.IsTemplate; // returns true
Lưu MapiMessage hoặc MailMessage ở Định dạng OFT
Cái SaveOptions lớp cho phép bạn chỉ định các tùy chọn bổ sung khi lưu MailMessage hoặc MapiMessage vào một định dạng cụ thể.
Đoạn mã mẫu dưới đây minh họa cách lưu một tin nhắn dưới định dạng OFT:
// Save the MailMessage to OFT format
using (var eml = MailMessage.Load("message.eml"))
{
eml.Save("message.oft", SaveOptions.DefaultOft);
// or alternative way #2
var saveOptions = new MsgSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
eml.Save("message.oft", saveOptions);
// or alternative way #3
saveOptions = SaveOptions.CreateSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
eml.Save("message.oft", saveOptions);
}
// Save the MapiMessage to OFT format
using (var msg = MapiMessage.Load("message.msg"))
{
msg.Save("message.oft", SaveOptions.DefaultOft);
// or alternative way #2
var saveOptions = new MsgSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
msg.Save("message.oft", saveOptions);
// or alternative way #3
saveOptions = SaveOptions.CreateSaveOptions(MailMessageSaveType.OutlookTemplateFormat);
msg.Save("message.oft", saveOptions);
}
Quản lý Tin nhắn Được ký số
Aspose.Email thực hiện đầy đủ thuật toán đối tượng email S/MIME. Điều này cung cấp cho API khả năng hoàn chỉnh để bảo lưu chữ ký số khi chuyển đổi tin nhắn giữa các định dạng.
Bảo Vệ Chữ Ký trong Khi Chuyển Đổi EML sang MSG
Aspose.Email giữ lại chữ ký số khi chuyển đổi từ EML sang MSG. Đoạn mã dưới đây cho bạn thấy cách chuyển đổi từ EML sang MSG.
Chuyển đổi tin nhắn S/MIME từ MSG sang EML
Aspose.Email giữ lại chữ ký số khi chuyển đổi từ MSG sang EML như trong đoạn mã dưới đây.
Kiểm tra Chữ ký của Email Bảo mật
Các tính năng sau có sẵn để kiểm tra chữ ký của các đối tượng MapiMessage.
- SecureEmailManager lớp để kiểm tra chữ ký của email bảo mật.
- SmimeResult lớp để lưu trữ kết quả của việc kiểm tra.
- SecureEmailManager.CheckSignature(MapiMessage msg) phương thức.
- SecureEmailManager.CheckSignature(MapiMessage msg, X509Certificate2 certificateForDecrypt) phương thức.
- SecureEmailManager.CheckSignature(MapiMessage msg, X509Certificate2 certificateForDecrypt, X509Store store) phương thức.
Đoạn mã mẫu dưới đây cho thấy cách triển khai các tính năng trong dự án của bạn:
var msg = MapiMessage.Load(fileName, new EmlLoadOptions());
var result = new SecureEmailManager().CheckSignature(msg);
var certFileName = "cert.pfx";
var cert = new X509Certificate2(certFileName, "pass");
var eml = MapiMessage.Load(fileName);
var store = new X509Store();
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
var result = new SecureEmailManager().CheckSignature(eml, cert, store);
Xóa Chữ ký khỏi MapiMessages
Để tăng khả năng tương thích, MapiMessage.RemoveSignature phương thức và MapiMessage.IsSigned thuộc tính được sử dụng để loại bỏ chữ ký số khỏi một tin nhắn.
Đoạn mã sau đây cho thấy cách triển khai các tính năng này vào dự án của bạn:
var msg = MapiMessage.Load(fileName);
if (msg.IsSigned)
{
var unsignedMsg = msg.RemoveSignature();
}
Giải mã MapiMessages bằng Chứng chỉ
Nếu bạn có các tin nhắn MAPI được mã hoá và cần giải mã chúng bằng khóa riêng lưu trong chứng chỉ, các tính năng sau của Aspose.Email có thể hữu ích:
- MapiMessage.IsEncrypted - Lấy giá trị cho biết liệu tin nhắn có được mã hóa hay không.
- MapiMessage.Decrypt() - Giải mã tin nhắn này (phương thức tìm kiếm trong kho lưu trữ My của người dùng và máy tính hiện tại để tìm chứng chỉ và khóa riêng phù hợp).
- MapiMessage.Decrypt(X509Certificate2 certificate) - Giải mã tin nhắn này bằng chứng chỉ.
Đoạn mã dưới đây cho thấy cách làm việc với các tin nhắn MAPI được mã hoá:
var privateCert = new X509Certificate2(privateCertFile, "password");
var msg = MapiMessage.Load("encrypted.msg");
if (msg.IsEncrypted);
{
var decryptedMsg = msg.Decrypt(privateCert);
}
Đặt Các Danh mục Màu cho Tệp MSG
Một danh mục màu đánh dấu một tin email với một mức độ quan trọng hoặc loại nào đó. Microsoft Outlook cho phép người dùng gán các danh mục màu để phân biệt email. Để xử lý danh mục màu, sử dụng FollowUpManager. Nó chứa các hàm như AddCategory, RemoveCategory, ClearCategories và GetCategories.
- AddCategory nhận MapiMessage và chuỗi danh mục màu, ví dụ "Purple Category" hoặc "Red Category" làm đối số.
- RemoveCategory nhận MapiMessage và chuỗi danh mục màu cần xóa khỏi tin nhắn.
- ClearCategories được sử dụng để xóa tất cả các danh mục màu khỏi tin nhắn.
- GetCategories được sử dụng để lấy tất cả các danh mục màu từ một tin nhắn cụ thể.
Ví dụ dưới đây thực hiện các công việc như sau:
- Thêm một danh mục màu.
- Thêm một danh mục màu khác.
- Lấy danh sách tất cả các danh mục.
- Xóa tất cả các danh mục.
Truy cập Thông tin Theo dõi trong Tệp MSG
Aspose.Email API cung cấp khả năng truy cập thông tin theo dõi từ một tin nhắn đã gửi hoặc đã nhận. Nó có thể lấy thông tin Đã Đọc, Biên Nhận Đã Giao và kết quả bỏ phiếu từ tệp tin tin nhắn.
Truy xuất Thông tin Nhận đọc và Bản kê Giao nhận
Đoạn mã dưới đây cho bạn thấy cách lấy thông tin biên nhận đã đọc và đã giao.
Tạo Tin nhắn Chuyển tiếp và Trả lời
API Aspose.Email cung cấp khả năng tạo và định dạng các tin nhắn chuyển tiếp và trả lời. ReplyMessageBuilder và ForwardMessageBuilder các lớp của API được sử dụng để tạo tin nhắn Reply và Forward tương ứng. Một tin nhắn Reply hoặc Forward có thể được chỉ định tạo bằng bất kỳ chế độ nào của OriginalMessageAdditionMode enum. Enum này có các giá trị sau:
- OriginalMessageAdditionMode.None - Tin nhắn gốc không được đưa vào trong tin nhắn trả lời.
- OriginalMessageAdditionMode.Attachment - Tin nhắn gốc được đưa vào dưới dạng đính kèm trong tin nhắn trả lời
- OriginalMessageAdditionMode.Textpart - Tin nhắn gốc được bao gồm dưới dạng văn bản trong phần thân của tin nhắn phản hồi
Tạo Tin nhắn Trả lời
Đoạn mã sau đây cho bạn thấy cách tạo một tin nhắn trả lời.
Tạo Tin nhắn Chuyển tiếp
Đoạn mã dưới đây cho bạn cách tạo tin nhắn chuyển tiếp.