Interop Outlook - 如何将位图添加到邮件中 body/attachment
Interop Outlook - How to add bitmap into mail body/attachment
我的应用程序中有一个按钮可以截取当前 window 的屏幕截图,我尝试将位图结果添加到 Outlook 邮件中。
我已经创建了我的应用程序的位图:
FrameworkElement element = (FrameworkElement)o;
double width = element.ActualWidth;
double height = element.ActualHeight;
RenderTargetBitmap bmpCopied = new RenderTargetBitmap((int)Math.Round(width), (int)Math.Round(height), 96, 96, PixelFormats.Default);
DrawingVisual dv = new DrawingVisual();
using (DrawingContext dc = dv.RenderOpen())
{
VisualBrush vb = new VisualBrush(element);
dc.DrawRectangle(vb, null, new Rect(new Point(), new Size(width, height)));
}
bmpCopied.Render(dv);
Clipboard.SetImage(bmpCopied);
为了创建邮件,我使用 dll Interop.Outlook 来管理我的新邮件:
Microsoft.Office.Interop.Outlook.Application outlookApp = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook._MailItem mailItem = (Microsoft.Office.Interop.Outlook._MailItem)outlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
mailItem.Attachments.Add(Clipboard.GetImage());
mailItem.Display(true);
但是,Attachements.Add() 不适用于位图,并且命令在没有任何解释的情况下崩溃了...
有没有办法不在计算机上创建临时文件将其附加到邮件中?
来自documentation,对于添加附件时的参数Source
:
The source of the attachment. This can be a file (represented by the full file system path with a file name) or an Outlook item that constitutes the attachment.
如果不将图像保存为文件,这似乎是不可能的。
有一个类似的问题 (Embedding picture to outlook email body),它提供了一种从文件中内联附加图像的方法,如果可以选择将图像保存到磁盘,这应该对您有所帮助。
我的应用程序中有一个按钮可以截取当前 window 的屏幕截图,我尝试将位图结果添加到 Outlook 邮件中。
我已经创建了我的应用程序的位图:
FrameworkElement element = (FrameworkElement)o;
double width = element.ActualWidth;
double height = element.ActualHeight;
RenderTargetBitmap bmpCopied = new RenderTargetBitmap((int)Math.Round(width), (int)Math.Round(height), 96, 96, PixelFormats.Default);
DrawingVisual dv = new DrawingVisual();
using (DrawingContext dc = dv.RenderOpen())
{
VisualBrush vb = new VisualBrush(element);
dc.DrawRectangle(vb, null, new Rect(new Point(), new Size(width, height)));
}
bmpCopied.Render(dv);
Clipboard.SetImage(bmpCopied);
为了创建邮件,我使用 dll Interop.Outlook 来管理我的新邮件:
Microsoft.Office.Interop.Outlook.Application outlookApp = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook._MailItem mailItem = (Microsoft.Office.Interop.Outlook._MailItem)outlookApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
mailItem.Attachments.Add(Clipboard.GetImage());
mailItem.Display(true);
但是,Attachements.Add() 不适用于位图,并且命令在没有任何解释的情况下崩溃了...
有没有办法不在计算机上创建临时文件将其附加到邮件中?
来自documentation,对于添加附件时的参数Source
:
The source of the attachment. This can be a file (represented by the full file system path with a file name) or an Outlook item that constitutes the attachment.
如果不将图像保存为文件,这似乎是不可能的。
有一个类似的问题 (Embedding picture to outlook email body),它提供了一种从文件中内联附加图像的方法,如果可以选择将图像保存到磁盘,这应该对您有所帮助。