从现有 MailItem 对象复制嵌入图像
Copying embedded images fron an existing MailItem object
我正在尝试从当前正在编辑的现有 MailItems 生成新的 MailItems。用户键入他的电子邮件内容(以下代码中的 currentMailItem),单击一个按钮,然后使用 currentMailItem 作为模板生成一堆 MailItem。
工作正常,除了嵌入图像:签名、使用插入命令插入的图像,它们不会显示在生成的邮件中 ("The linked image cannot be displayed...")。所以我正在尝试获取图像,将它们重新附加到新的 MailItems 并重新链接它们。
我检索邮件项目:
Outlook.MailItem currentMailItem = Application.ActiveInspector().CurrentItem;
然后我在附件中循环(我这样做是为了将实际附件复制到生成的邮件中)
foreach (Attachment attachment in currentMailItem.Attachments)
{
var tempFile = "...";
attachment.SaveAsFile(tempFile);
}
这就是一些奇怪的事情发生的时候,使用最简单的情况:一封包含一个短字符串的邮件,以及一个包含图像的签名。
第一次打开功能,附件全是空的,签名图全无。
如果我再次启动该功能,这次有一个附件,只是我尝试保存附件时出现异常:
System.Runtime.InteropServices.COMException: 'Cannot save the attachment. Cannot add the attachment; no data source was provided.'
更奇怪的是,一次,而且只有一次,尽管我运行这个代码一千次,我实际上设法保存了附件,这是预期的签名图像。
此时我对任何指针都持开放态度...
谢谢!
首先,我建议通过调用 Save
方法来保存在 UI 中所做的用户更改:
Outlook.MailItem currentMailItem = Application.ActiveInspector().CurrentItem;
currentMailItem.Save();
Outlook.MailItem copy = currentMailItem.Copy();
// do whatever you need with a copy
然后,您可以尝试使用 MailItem.Copy 方法来创建对象的另一个实例。请注意,Copy
方法 returns 表示可以发送的 MailItem
对象的变量。
我正在尝试从当前正在编辑的现有 MailItems 生成新的 MailItems。用户键入他的电子邮件内容(以下代码中的 currentMailItem),单击一个按钮,然后使用 currentMailItem 作为模板生成一堆 MailItem。
工作正常,除了嵌入图像:签名、使用插入命令插入的图像,它们不会显示在生成的邮件中 ("The linked image cannot be displayed...")。所以我正在尝试获取图像,将它们重新附加到新的 MailItems 并重新链接它们。
我检索邮件项目:
Outlook.MailItem currentMailItem = Application.ActiveInspector().CurrentItem;
然后我在附件中循环(我这样做是为了将实际附件复制到生成的邮件中)
foreach (Attachment attachment in currentMailItem.Attachments)
{
var tempFile = "...";
attachment.SaveAsFile(tempFile);
}
这就是一些奇怪的事情发生的时候,使用最简单的情况:一封包含一个短字符串的邮件,以及一个包含图像的签名。
第一次打开功能,附件全是空的,签名图全无。
如果我再次启动该功能,这次有一个附件,只是我尝试保存附件时出现异常:
System.Runtime.InteropServices.COMException: 'Cannot save the attachment. Cannot add the attachment; no data source was provided.'
更奇怪的是,一次,而且只有一次,尽管我运行这个代码一千次,我实际上设法保存了附件,这是预期的签名图像。
此时我对任何指针都持开放态度... 谢谢!
首先,我建议通过调用 Save
方法来保存在 UI 中所做的用户更改:
Outlook.MailItem currentMailItem = Application.ActiveInspector().CurrentItem;
currentMailItem.Save();
Outlook.MailItem copy = currentMailItem.Copy();
// do whatever you need with a copy
然后,您可以尝试使用 MailItem.Copy 方法来创建对象的另一个实例。请注意,Copy
方法 returns 表示可以发送的 MailItem
对象的变量。