問題

使用託管程式碼中的MAPI函式沒有正式支援.顯然,MAPI使用自己的記憶體管理,它在託管程式碼中崩潰和燒傷(見here here )

我想要做的就是使用主題、主體和一個或多個附件啟動預設的電子郵件客戶端.

所以我一直在研究 MAPISendDocuments ,它似乎有效.但我無法拿出勇氣在生產程式碼中實際使用該函式.

有沒有人使用過這個函式?你有什麼恐怖故事?

PS.不,我不會使用附件的命令列引數ShellExecute Outlook.exe.

PPS.附件支援是一個需求,因此Mailto:解決方案不會為我削減它.

  最佳答案

有一個單獨的助手EXE,它採用命令列引數(或管道到其StandardInput)來完成所需要的並從主應用程式呼叫它.這將MAPI東西保持在主應用程式的程序空間之外.好的,您仍然在混合MAPI和.NET,但是在非常短暫的程序中.假設MAPI和CLR開始導致長時間執行的程序出現問題.

我們使用Dmitry Streblechenko的傑出 Redum Data Objects 庫,它允許我們在JScript中編寫這樣的“shim”程式碼並呼叫它,它使CLR和MAPI世界保持在單獨的程序中,但是支援的方式.

@Chris Fournier re.編寫一個非託管DLL.這不起作用,因為問題是在同一過程中混合MAPI和託管程式碼.

  相同標籤的其他問題

.netemailpinvokemapi