Работа с прикачени файлове към съобщения
Парсване и запазване на прикачени файлове
Outlook файловете със съобщения могат да съдържат едно или повече прикачени файлове. Aspose.Email позволява на разработчиците да обхождат прикачените файлове в MSG файл и да ги запазват на диск. Тази тема описва процеса. Тя също описва как да вградите прикачен файл.
Aspose.Email MapiMessage клас се използва за зареждане на MSG файл от диск и разкрива getAttachments() метод, който позовава се на MapiAttachment колекция от обекти, свързана с MSG файла. Методът MapiAttachment обектът допълнително разкрива методи, които изпълняват действия върху прикачения файл.
За запазване на прикачените файлове в MSG файл на диск с оригиналното име и разширение:
- Създайте инстанция на MapiMessage клас за зареждане на MSG файл чрез Load() статичен метод.
- Извикайте MapiRecipient клас getAttachments() метод за получаване на референция към колекцията от MapiAttachment обекти, свързани с MSG файла.
- Обходете MapiAttachmentCollection за показване на съдържанието относно всяка MapiAttachment обект чрез публичните му методи.
- Извикайте MapiAttachment клас save() метод за запазване на прикачения файл на диска.
Вграждане на съобщения като прикачени файлове
Microsoft Outlook съобщение може да съдържа други Microsoft Outlook съобщения като прикачени файлове, било то като редовни съобщения, описани по-горе, или вградени съобщения. Методът MapiAttachmentCollection предоставя претоварени членове на метода add за създаване на Outlook съобщения с двата вида прикачени файлове. Outlook MSG файлове, вградени в MSG файл, съдържат PR_ATTACH_METHOD със стойност 5.
Четене на вградено съобщение от прикачен файл
Вмъкване и замяна на MSG прикачени файлове
Aspose.Email API предоставя възможност за вмъкване на прикачени файлове на конкретен индекс в родителското съобщение. Тя също предоставя възможност за замяна съдържанието на прикачен файл с друг прикачен файл от съобщение.
Вмъкване на MSG прикачен файл на конкретно място
Aspose.Email API предоставя възможност за вмъкване на MSG прикачен файл в родителски MSG, използвайки MapiAttachmentCollection.Insert() метод.
Замяна на съдържанието на вграден MSG прикачен файл
Това може да се използва за замяна на съдържанието на вградените прикачени файлове с новите, като се използва Замяна метод. Въпреки това, не може да се използва за въвеждане на прикачен файл с PR_ATTACH_NUM = 4 (например) в колекция, чийто collection.Count = 2.
Запазване на прикачени файлове от дигитално подписано съобщение
Aspose.Email API предоставя възможност за получаване или задаване на стойност, указваща дали ясно подписаното съобщение ще бъде декодирано.
Преименуване на прикачен файл в MapiMessage
Aspose.Email прави възможно редактирането на Показвано име стойност на свойството в Прикачени файлове на MapiMessage.
Следният примерен код демонстрира как да се актуализират имената за показване на първия и втория прикачен файл в заредения MapiMessage:
MapiMessage msg = MapiMessage.load(fileName);
msg.getAttachments().get_Item(0).setDisplayName("New display name 1");
msg.getAttachments().get_Item(1).setDisplayName("New display name 2");
Проверка дали прикаченият файл е вграден или редовен
Разликата между вградените и редовните прикачени файлове е в начина, по който се представят в имейла. Вградените прикачени файлове са вмъкнати в тялото на имейла и могат да се преглеждат без да се отваря отделен файл или да се изтегля нещо. Редовните прикачени файлове, от друга страна, са отделни файлове, прикрепени към имейла, но не се показват директно в тялото на съобщението и трябва да се изтеглят и отворят отделно. Методът MapiAttachment.IsInline свойство на MapiAttachment класът получава стойност, указваща дали прикаченият файл е вграден или редовен.
Следният примерен код зарежда имейл съобщение от файл и след това извлича информация за прикачените файлове, като конкретно отпечатва името за показване на всеки прикачен файл и дали той е вграден в съобщението или не:
MapiMessage message = MapiMessage.load("fileName");
for (MapiAttachment attach : message.getAttachments()) {
System.out.println(attach.getDisplayName() + ": " + attach.isInline());
}