Керування вкладеннями повідомлень
Обробка вкладень в Outlook
Створення та збереження Outlook повідомлень (MSG) файлів пояснює, як створювати та зберігати повідомлення, а також створювати MSG‑файли з вкладеннями. У цій статті розглядається, як керувати вкладеннями Microsoft Outlook за допомогою Aspose.Email. Вкладення з файлу повідомлення отримуються і зберігаються на диск за допомогою MapiMessage клас Вкладення властивість. Цей Вкладення властивість є колекцією типу MapiAttachmentCollection клас.
Перевірка типу вкладення (вбудоване чи звичайне)
Вбудовані та звичайні вкладення виконують різні функції. Вбудовані вкладення візуально інтегруються у повідомлення електронної пошти і зазвичай є зображеннями або медіа‑файлами. Натомість звичайні вкладення — це окремі файли, приєднані до листа, які можуть включати різні типи файлів. The MapiAttachment.IsInline властивість MapiAttachment клас отримує значення, що вказує, чи є вкладення вбудованим чи звичайним.
Наступний приклад коду витягує та відображає інформацію про кожне вкладення у завантаженому MapiMessage, включаючи їхні назви для відображення та чи є вони вбудованими (inline) або ні.
var message = MapiMessage.Load(fileName);
foreach (var attach in message.Attachments)
{
Console.WriteLine($"{attach.DisplayName0} : {attach.IsInline)}");
}
Перевірка типу вкладення (IsReference)
The MapiAttachment клас включає IsReference властивість, яка дозволяє розробникам ідентифікувати референсні вкладення у повідомленні. За допомогою наступного прикладу коду можна перевірити, чи є вкладення референсним:
foreach (var attachment in msg.Attachments)
{
if (attachment.IsReference)
{
// Process reference attachment
}
}
Зберегти прикріплення з MSG файлів
Щоб зберегти прикріплення з MSG файлу:
- Ітеруйте через MapiAttachmentCollection колекцію та отримайте окремі прикріплення.
- Щоб зберегти вкладення, викличте метод Save() класу MapiAttachment.
Наступний фрагмент коду показує, як зберегти вкладення на локальний диск.
Витягнути вкладення з MSG‑файлів у форматі RTF
Для повідомлень у форматі RTF можна використати наступний код, щоб розрізнити та витягнути вкладення, які є або вбудованими (Inline), або відображаються як іконка у тілі повідомлення. Наступний фрагмент коду показує, як ідентифікувати та витягти вбудоване вкладення з MSG, сформованого у форматі 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);
}
}
}
Отримати вбудовані поштові повідомлення‑вкладення
Вбудовані OLE‑вкладення також з’являються у MapiMessage Колекція класу Attachment. Наступний приклад коду розбирає файл повідомлення на предмет вбудованих вкладень повідомлень та зберігає його на диск. The MapiMessage Статичний метод класу FromProperties() може створити нове повідомлення з вбудованого вкладення. Наступний фрагмент коду показує, як отримати вкладення вбудованих поштових повідомлень.
Видалити прикріплення
Бібліотека Aspose Outlook забезпечує можливість видаляти вкладення з файлів Microsoft Outlook Message (.msg):
- Викличте метод RemoveAttachments(). Він приймає шлях до файлу повідомлення як параметр. Реалізовано як публічний статичний метод, тому не потрібно створювати екземпляр об’єкта.
Наступний фрагмент коду показує, як видаляти вкладення.
Ви також можете викликати the MapiMessage статичний метод класу DestroyAttachment(). Працює швидше, ніж RemoveAttachment(), оскільки метод RemoveAttachment() розбирає файл повідомлення.
Додати MSG прикріплення
Повідомлення Outlook може містити інші повідомлення Microsoft Outlook у вигляді вкладень, будь то звичайні або вбудовані повідомлення. The MapiAttachmentCollection надає перевантажені члени методу Add для створення Outlook‑повідомлень з обома типами вкладень.
Спробуйте!
Додавати або видаляти електронні вкладення за допомогою безкоштовного Aspose.Email Editor App.
Додати референсні вкладення до MapiMessages
The ReferenceAttachmentOptions клас спрощує додавання референсних вкладень, інкапсулюючи всі необхідні властивості в одному об’єкті.
Параметри ReferenceAttachmentOptions:
- sharedLink: Повністю кваліфіковане спільне посилання на вкладення, надане веб‑сервісом, що розміщує файл.
- url: Розташування файлу або URL ресурсу.
- providerName: Назва провайдера референсних вкладень (наприклад, Google Drive, Dropbox).
- Приклад: Додавання референсного вкладення за допомогою 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);
Вбудовування повідомлень як прикріплень
Наступний фрагмент коду показує, як вбудувати MSG‑файл як вкладення в повідомлення.
Читання вбудованих повідомлень з прикріплень
Нижче наведений фрагмент коду показує, як читати вбудовані повідомлення з прикріплень.
Вставка та заміна вкладення
Aspose.Email API надає можливість вставляти вкладення у вказаний індекс батьківського повідомлення. Він також забезпечує можливість заміняти вміст вкладення іншим повідомлення‑вкладенням.
Спробуйте!
Запустіть ReplaceAttach простий проєкт програми, і спробуйте можливості Aspose.Email для заміни вкладень у дії.
Вставка прикріплень у певних місцях
API Aspose.Email забезпечує можливість вставити MSG‑вкладення до батьківського MSG за допомогою методу Insert колекції MapiAttachmentCollection MapiAttachmentCollection Insert(int index, string name, MapiMessage msg). Наступний фрагмент коду показує, як вставити вкладення у конкретне місце.
Замінити вміст прикріплення
Це можна використати для заміни вбудованого вмісту вкладень новим за допомогою методу Replace. Однак це не можна застосовувати для вставлення вкладення з PR_ATTACH_NUM = 4 (наприклад) у колекцію, у якої collection.Count = 2. Наступний фрагмент коду показує, як замінити вміст вкладення.
Перейменування вкладень у MapiMessage
Можливо редагувати значення властивості DisplayName у вкладеннях MapiMessage.
var msg = MapiMessage.Load(fileName);
msg.Attachments[0].DisplayName = "New display name 1";
msg.Attachments[1].DisplayName = "New display name 2";
Зберегти вкладення з цифрово підписаних повідомлень
Aspose.Email API надає можливість отримати або встановити значення, що вказує, чи буде декодовано чисто підписане повідомлення.