C# 不阻塞应用程序的MAPI调用
我的应用程序正在通过MAPI呼叫发送电子邮件:C# 不阻塞应用程序的MAPI调用,c#,multithreading,mapi,C#,Multithreading,Mapi,我的应用程序正在通过MAPI呼叫发送电子邮件: [DllImport("MAPI32.DLL")] static extern int MAPISendMail(IntPtr sess, IntPtr hwnd, MapiMessage message, int flg, int rsv); 在其他地方: m_lastError = MAPISendMail(new IntPtr(0), new IntPtr(0), msg, how, 0); 除了一个问题外,此操作效果良好:outlook
[DllImport("MAPI32.DLL")]
static extern int MAPISendMail(IntPtr sess, IntPtr hwnd, MapiMessage message, int flg, int rsv);
在其他地方:
m_lastError = MAPISendMail(new IntPtr(0), new IntPtr(0), msg, how, 0);
除了一个问题外,此操作效果良好:outlook窗口将完全阻止应用程序。这似乎是预期的行为,但我不想让它这样做。有什么想法吗
我尝试从后台线程调用
MAPI
,但似乎不可能。这就是简单MAPI的工作方式-使用OOM代替(Application.CreateItem
/MailItem.Display(false)
)。这就是简单MAPI的工作方式-使用OOM代替(Application.CreateItem
/MailItem.Display(false)
).不过,这只适用于Outlook。我不相信MAPI没有解决办法。Outlook是MAPI。至少在Windows上的市场份额是这样。Outlook使用OOM,其他客户端使用简单MAPI。不过,这只适用于Outlook。我不相信MAPI没有解决办法。Outlook是MAPI。至少在市场份额上是这样在Windows上。Outlook使用OOM,其他客户端使用简单MAPI。