我需要循环所有Outlook项目并搜索完全填充包括所有附件的正则表达式模式的字符串。
我知道这是一项很大的操作,需要大量资源,但是该项目需要这样做。
我设法制作了可以执行此操作的VSTO插件,但问题是该插件有时导致Outlook挂起。这不是一个好的业务解决方案,它不能稳定运行。
在我的代码中,请确保在使用COM对象后将其关闭。
outlookItem.Close(OlInspectorClose.olDiscard);
Marshal.ReleaseComObject(outlookItem);
将附件转换为蒸汽并使用后处理。
string AttachSchema = "http://schemas.microsoft.com/mapi/proptag/0x37010102";
byte[] filebyte = null;
PropertyAccessor pacc = attachment.PropertyAccessor;
filebyte = (byte[])pacc.GetProperty(AttachSchema);
Stream stream = new MemoryStream(filebyte);
任何人都可以就如何使Addin稳定提供一些建议吗?
答案 0 :(得分:1)
首先,使用PropertyAccessor对象(尤其是在联机模式下)访问PR_ATTACH_DATA_BIN
(或任何其他大的PT_BINARY
属性)可能不起作用,因此最好使用Attachment.SaveAsFile
然后根据需要将文件加载到内存(或内存映射文件)中。
第二,请记住,您只能在主Outlook线程上使用OOM。要在辅助线程上运行代码,您需要扩展MAPI(仅C ++或Delphi)或Redemption(其RDO对象系列可以在辅助线程上使用)。