2015-09-15 2 views
0

Я разрабатываю Outlook Addon с C# и VS2010 в Outlook 2010 и Я пытаюсь пропустить коллекцию вложений MailItem и получить имена. Меня интересуют только встроенные (встроенные) изображения.Получить имя встроенного изображения из веб-офиса

Я знаю, что Outlook хранит все «обычные» вложения и встроенные (встроенные) изображения в одной коллекции.

Как я это делал до сих пор, разобрав HTMLbodymailItem и ищите HTML-тег <img>. Я могу проделать свой путь оттуда, получить имя от src="", которое следует за этим шаблоном «imageXXX.ext» «XXX» - это 3 цифры, а ext - расширение. Как только у меня есть имя из HTML-объекта, я могу выполнить цикл через mailItem.Attchments и сопоставить имя, которое я ранее получил с помощью mailItem.Attchments [index] .FileName. Это то, что HTML выглядит следующим образом:

<img border=0 width=413 height=319 
id="Picture_x0020_1" src="cid:[email protected]"> 

Моя проблема: Когда встроенные изображения отправляются из web office client, они не имеют ту же схему именования. A Guid присваивается им, а имя, которое у них есть в коллекции вложений, отличается. Это то, что он выглядит следующим образом:

<img size="103705" contenttype="image/png" id="img976028" 
sizeoption="best" contextid="img985496" 
tabindex="0" style="max-width: 99.9%; 
-webkit-user-select: none;" src="cid:3119ab46-1503-48df-b6bb-738a9926618a"> 

Следствием этого является то, что я не могу соответствовать названию вложения от HTMLbody с именем вложения из коллекции привязанности, которая препятствует мне знать, если вложение рядный или не.

Что я пробовал: Looping через Shapes коллекции WordEditor собственности. Это фактически не возвращает никакого встроенного вложения, кроме фактических фигур.

Получение свойств Class, Parent, PathName, Position, Тип вложений, отчаянно ищущих разницу между вложением, которое является встроенным, и теми, которые не являются. Особенно свойство Type, которое должно сообщать о типе вложения, как я понял.

Получение Guid через mailItem.Attachments[i].GetType().GUID.ToString(); и сравнить его с Guid в HTML, но никакого успеха, линия выше, не возвращает Guid полный нулей.

Что я хочу сделать: Найти способ получить имя встроенного изображения, чтобы я мог сопоставить его с именем в коллекции вложений И/ИЛИ найти способ определить разницу между встроенными изображениями и прикрепленные изображения.

Любая помощь приветствуется.

ответ

0

Не предполагайте, что атрибут cid соответствует имени файла любым способом. Значение всего атрибута cid будет храниться в свойстве PR_ATTACH_CONTENT_ID (имя DASL http://schemas.microsoft.com/mapi/proptag/0x3712001F). Доступ к объекту можно получить с помощью Attachment.PropertyAccessor.GetProperty.

Также обратите внимание, что Outlook будет извлекать изображение из вложения (а не удаленного веб-сервера), если свойство PR_ATTACH_CONTEMT_LOCATION соответствует URL-адресу изображения.

Вы можете увидеть это в OutlookSpy - выберите сообщение, нажмите кнопку «Сообщение», перейдите на вкладку «GetAttachmentTable», дважды щелкните по вложению.

+0

Спасибо! теперь я могу сравнить значение, полученное GetProperty, с тем, которое находится в HTML, и если оно соответствует ему, это означает, что это встроенное изображение. Я также ценю ссылку на Outlook Spy. Я не знал этого инструмента. – SystemFailure

Смежные вопросы