我试图从现有的MailItem生成新的MailItems,目前正在编辑。用户键入其电子邮件的内容(以下代码中的currentMailItem),单击按钮,并使用currentMailItem作为模板生成一堆MailItem。
工作正常,除了嵌入的图像:签名,使用“插入”命令插入的图像,它们不会显示在生成的邮件中("链接的图像无法显示...")。所以我试图获取图像,将它们重新连接到新的MailItems并重新链接它们。
我用:
检索mailItemOutlook.MailItem currentMailItem = Application.ActiveInspector().CurrentItem;
然后我在Attachements中循环(无论如何我这样做是为了将实际的附件复制到生成的邮件中)
foreach (Attachment attachment in currentMailItem.Attachments)
{
var tempFile = "...";
attachment.SaveAsFile(tempFile);
}
当发生一些奇怪的事情时,使用最简单的情况:包含一个短字符串的邮件和包含图像的签名。
我第一次启动这个功能时,附件是完全空的,没有签名图像的痕迹。
如果我再次启动该功能,这次有一个附件,只有当我尝试保存附件时才会出现异常:
System.Runtime.InteropServices.COMException:'无法保存附件。无法添加附件;没有提供任何数据来源。'
Weirder,曾经,只有一次,即使我运行了这个代码一千次,我实际上设法保存附件,这是预期的签名图像。
此时我对任何指针开放...... 谢谢!
答案 0 :(得分:0)
首先,我建议您通过调用Save
方法保存在用户界面中所做的用户更改:
Outlook.MailItem currentMailItem = Application.ActiveInspector().CurrentItem;
currentMailItem.Save();
Outlook.MailItem copy = currentMailItem.Copy();
// do whatever you need with a copy
然后,您可以尝试使用MailItem.Copy方法创建另一个对象实例。注意,Copy
方法返回一个表示可以发送的MailItem
对象的变量。