Различаване между вградени и обикновени прикачени файлове

Често се случва имейл съобщението да съдържа вградени изображения в тялото си, както и обикновени прикачени файлове, свързани с него. Използвайки MailMessage клас, вградени прикачени файлове могат да бъдат извлечени от LinkedResourceCollection клас, докато обикновените прикачени файлове могат да бъдат достъпни/извлечени с AttachmentCollection клас на съобщение. Въпреки това, това е различно, когато съобщението се зарежда чрез класа Aspose.Email.Mapi.MapiMessage, тъй като всички вградени изображения и обикновени прикачени файлове са достъпни за потребителя в същия клас MapiAttachmentCollection. Следователно е необходимо да се разработи метод, който да различава вградения и обикновения прикачен файл, когато се използва MapiMessage.

Използване на Aspose.Email за различаване между вградени и обикновени прикачени файлове

Тази статия обяснява как да се различат вградените прикачени файлове от обикновените с помощта на MapiMessage. За да се определи това различие, типът на тялото на MapiMessage се взема предвид, както следва:

Текстово тяло: Имейл съобщения с тип тяло plain text не се нуждаят от проверка, тъй като всички прикачени файлове в такива съобщения винаги са обикновени.

Html тяло: При съобщение с HTML тип тяло, прикаченият файл трябва не само да съдържа свойството PR_ATTACH_FLAGS (0x37140003), но стойността му също трябва да е 0x00000004 за вградени прикачени файлове. Ако това условие е изпълнено, тогава се взема предвид и теглата PR_ATTACH_CONTENT_LOCATION и PR_ATTACH_CONTENT_ID за определяне на естеството на прикачения файл. Въпреки това, при липса на PR_ATTACH_FLAGS Mapi таг, прикаченият файл се проверява за свойството PR_ATTACH_DISPOSITION (0x3716001F или 0x3716001E) за определяне типа на прикачения файл.

Rtf тяло: Ако тялото е RTF, тогава всички OLE прикачени файлове са вградени. Стойността на PR_ATTACH_METHOD за всички OLE прикачени файлове е 0x00000006.

Следният примерен код демонстрира програмно различаване между вградени и обикновени прикачени файлове. Функцията IsInlineAttachment приема прикачен файл и тип на тялото на съобщението като входни параметри и връща true, ако прикаченият файл е вграден.