Мы создаем надстройку VSTO для Outlook, которая сканирует исходящие почтовые сообщения на наличие вложений, чтобы предупредить пользователей и обнаружила неожиданное поведение.
Рассматриваются следующие способы добавления файла в почтовое сообщение Outlook:
- Вложение файла
- Снимок экрана
- Отсечение экрана
- Файл подписи почты
Все четыре распознаются каквложения при возникновении события Отправка элемента:
Private Sub Application_ItemSend(ByVal Item As Object, ByRef Cancel As Boolean) Handles Application.ItemSend
В следующем примере кода:
For Each attachment As Outlook.Attachment In Item.Attachments
'do some stuff like check attachment size
Next
Мы проверяем наличие небольших встроенных изображений в файле подписи, которые не нужно уведомлятьпользователь.
В следующих случаях:
- Снимок экрана
- Отсечение экрана
- Файл подписи почты
Мы 'мы заметили, что когда добавленные файлы являются внедренными изображениями (не вложениями), мы не видим правильное свойство размера для изображения, используя:
attachment.Size
IE: скажем, мы отправляем электронное письмо Outlook, которое имеет:
- Одно вложение.
- Один снимок экрана.
- Один файл подписи с одним изображением.
Кажется, наш кодраспознавать правильное количество вложений, однако, если мы проверяем размер вложения для снимка экрана или изображения файла подписи, свойство размера вложения всегда оценивается в 0, что, как нам кажется, связано с тем, что файл не существуетна диске и прикрепленном файле.
For Each attachment As Outlook.Attachment In Item.Attachments
if attachment.size > 755 then
'ignore the image
end if
Next
Есть ли способ проверить размер изображения в VB.Net или нам нужно сохранить файл во временном каталоге, чтобы сделать это?
РЕДАКТИРОВАТЬ Устранение неполадок с шпионским Outlookteps:
- Новое почтовое сообщение
- Вставленный снимок экрана и файл подписи:
OutlookSpy-> IMessage
Пустое окно сообщения (ниже)
Закрыть окно IMessage.
Повторно открыть окно IMessage
Отображаются вставленные (прикрепленные) файлы (ниже)
8. Двойной щелчок на вложении
Выбранная кнопка инспектора
Текущий пункт:
Просмотр:
Вложения:
Просмотр:
IEnumVariant:
Я подозреваю, что различия между шагами 4 и 7 могут быть связаны с тем, что Outlook мог сохранитьчерновик почтового сообщения?
ДОПОЛНИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ
Добавлен код для сохранения почтового сообщения перед проверкой размера подписи / встроенного изображения:
'convert generic object to Outlook.MailItem object.
Dim objMailItem As Outlook.MailItem = CType(Item, Outlook.MailItem)
'Save message
objMailItem.Save()
'quick check to see if message is saved (it is)
Dim saved As Boolean = objMailItem.Saved()
For Each attachment As Outlook.Attachment In objMailItem.Attachments
'all items still evaluate to 0.
If attachment.Size >= 20 Then
'do some stuff
End If
Next
Спасибо.