从现有MailItem对象

时间:2018-04-27 00:29:02

标签: c# outlook attachment

我试图从现有的MailItem生成新的MailItems,目前正在编辑。用户键入其电子邮件的内容(以下代码中的currentMailItem),单击按钮,并使用currentMailItem作为模板生成一堆MailItem。

工作正常,除了嵌入的图像:签名,使用“插入”命令插入的图像,它们不会显示在生成的邮件中("链接的图像无法显示...")。所以我试图获取图像,将它们重新连接到新的MailItems并重新链接它们。

我用:

检索mailItem
Outlook.MailItem currentMailItem = Application.ActiveInspector().CurrentItem;

然后我在Attachements中循环(无论如何我这样做是为了将实际的附件复制到生成的邮件中)

foreach (Attachment attachment in currentMailItem.Attachments)
{
    var tempFile = "...";
    attachment.SaveAsFile(tempFile);
}

当发生一些奇怪的事情时,使用最简单的情况:包含一个短字符串的邮件和包含图像的签名。

  • 我第一次启动这个功能时,附件是完全空的,没有签名图像的痕迹。

  • 如果我再次启动该功能,这次有一个附件,只有当我尝试保存附件时才会出现异常:

    System.Runtime.InteropServices.COMException:'无法保存附件。无法添加附件;没有提供任何数据来源。'

  • Weirder,曾经,只有一次,即使我运行了这个代码一千次,我实际上设法保存附件,这是预期的签名图像。

此时我对任何指针开放...... 谢谢!

1 个答案:

答案 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对象的变量。