c# - 互操作 Outlook - 如何将位图添加到邮件正文/附件中
问题描述
我的应用程序中有一个按钮,可以截取当前窗口的屏幕截图,然后我尝试将位图结果添加到 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() 不适用于位图,并且命令在没有任何解释的情况下崩溃......
有没有办法做到这一点,而不在计算机上创建一个临时文件将其附加到邮件中?
解决方案
从文档Source
中,对于添加附件时的参数:
附件的来源。这可以是一个文件(由带有文件名的完整文件系统路径表示)或构成附件的 Outlook 项目。
如果不将图像保存为文件,这似乎是不可能的。
有一个类似的问题(将图片嵌入到 Outlook 电子邮件正文),它提供了一种从文件中内联附加图像的方法,如果可以选择将图像保存到磁盘,这应该对您有所帮助。
推荐阅读
- python - 在 Python 中,阅读没有大纲的 pdf 表格的最佳方法是什么?
- javascript - 如何通过javascript将选定的文件路径传递给python脚本
- python - 为什么在没有实例化的情况下执行类中的语句?
- python - Python类不识别列表
- firebase - Flutter Firebase 时间戳搜索查询
- python - 尝试使用 YouTube API 每小时检查一次视频的观看次数。可以使用 Python 来存储数据还是需要 PHP?
- tensorflow - 卷积神经网络的训练和测试
- node.js - 如何将模块从 Electron 应用程序暴露给外部模块
- c++ - c++ char*、字符串指针和strcmp问题
- android - 如何在Android中更改List View的第一个内容的属性