1

我正在编写需要使用 MAPI 发送电子邮件的 ac# .net 应用程序。我正在使用以下库来实现此http://www.codeproject.com/KB/IP/SendFileToNET.aspx 这是我如何使用它的示例。

MAPI mapi = new MAPI();
mapi.AddRecipientTo("test@test.com");
int returncode = mapi.SendMailPopup("subject", "message");
if(returncode==0)
{
MessageBox.Show("User sent message");
}
else if (returncode==1)
{
MessageBox.Show("User abort");
 }

这段代码在默认邮件程序上打开一个新的消息对话框,如果用户决定发送或中止发送电子邮件,应该显示。

此代码在使用 Outlook 时工作正常,这意味着它会弹出一个新的电子邮件对话框并返回正确的错误代码,例如,如果用户决定不通过关闭消息对话框发送消息。

问题是当使用 windows 邮件时,这不能正常工作。发送邮件对话框正确打开,应用程序在 mapi.SendMailPopup 上暂停执行,直到邮件对话框关闭。然而,无论用户做什么,mapi.SendMailPopup 总是返回零。例如,如果用户决定关闭消息对话框而不发送消息,则 mapi.SendMailPopup 在正确响应为 1(用户中止)时返回 0。

我的问题是 windows live mail 是否需要为此提供 MAPI 支持,如果没有,有人可以告诉我其他一些免费的 windows 邮件客户端,它们将提供所需的 MAPI 支持

4

1 回答 1

1

这令人困惑——.NET 解决方案是 SMAPI,而不是 MAPI。我不确定来自 SMAPI 的返回值有多可靠,特别是因为返回值是直接从您的默认 MUA 供应商的 SMAPI 实现返回的,并且至少有十几个。由于浏览器不使用返回值,并且它们是 SMAPI 的主要客户端,因此我不会依赖它。

于 2010-08-13T14:33:43.510 回答