MAPI和托管代码体验?

Ish*_*eel 12 .net email mapi pinvoke

官方不支持在托管代码中使用MAPI函数.显然,MAPI使用自己的内存管理,它在托管代码中崩溃和烧毁(请参阅此处此处)

我想要做的就是启动包含主题,正文和一个或多个附件的默认电子邮件客户端.

所以我一直在研究MAPISendDocuments,它似乎工作.但我无法鼓起勇气在生产代码中实际使用该功能.

有没有人经常使用这个功能?你有恐怖故事吗?

PS.不,我不会用附件的命令行参数shellExecute Outlook.exe.

PPS.附件支持是必要条件,所以邮寄地址:解决方案不削减对我来说.

Dun*_*art 8

有一个单独的帮助程序EXE,它接受命令行参数(或管道到其StandardInput)执行所需的操作并从主应用程序调用它.这使MAPI内容远离主应用程序的进程空间.好吧,你仍然在混合MAPI和.NET,但是在一个非常短暂的过程中.假设MAPI和CLR开始导致更长时间运行的进程出现问题.

我们使用Dmitry Streblechenko出色的Redemption Data Objects库,它允许我们在JScript中编写这样的"垫片"代码并调用它,这使CLR和MAPI世界保持在不同的进程中,但是以受支持的方式.

@Chris Fournier重新.编写一个非托管DLL.这不起作用,因为问题是在同一进程中混合MAPI和托管代码.