Добавить изображение, чтобы установить свойство, не сохраняя его в VB.net - PullRequest
0 голосов
/ 28 мая 2019

Я разработал код для генерации электронных писем о перспективах на основе статистических данных. Застрял в проблеме, где сохранение изображения требуется на ПК, поскольку это необходимо для замены изображения в теле внешнего вида HTML для завершения отчета. часть перспективы достигается через Импорт EAGetMail Импорт EASendMail Импортирует Microsoft.Office.Interop.Outlook Попробовал упомянуть изображение по-разному, попробовал и входной поток. Ничего из этого не работает, пока Dim attach = OutlookMessage.Attachments.Add свойство принимает только путь, а не изображение.

Dim captcha2 As Bitmap
 If System.IO.File.Exists("C:\output\Sa7e839.jpg") Then
            System.IO.File.Delete("C:\output\Sa7e839.jpg")
        End If

        captcha2.Save("C:\output\Sa7e839.jpg")


Dim attach = OutlookMessage.Attachments.Add("C:\output\Sa7e839.jpg") ' temp saved file. deletes on rerun of app 
attach.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "backlog") ' setting property
oMail.HtmlBody = oMail.HtmlBody.Replace("cid:image003.png@01D2B201.94F4FA80", "cid:backlog") ' replacing HTML 

Ожидаемый результат: изображение не нужно сохранять, а затем прикреплять в качестве пути, по которому изображение должно быть перемещено непосредственно из кода в почтовое сообщение Outlook.

1 Ответ

0 голосов
/ 31 мая 2019

Вы не можете вставлять изображения непосредственно в тело HTML - Outlook (который использует Word для рендеринга HTML-сообщений) не поддерживает изображения в кодировке base64, встроенные в тело HTML - они должны добавляться как вложения и указываться идентификатором содержимого.

А вложения в OOM могут быть добавлены только из файловой системы. Если вы хотите создать вложение в обход файловой системы, вам необходимо использовать Extended MAPI (C ++ или Delphi) или Redemption (любой язык).

...