我正在编写一个需要使用MAPI发送电子邮件的c#.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总是返回零。例如,如果用户决定在不发送消息的情况下关闭消息对话框,则当正确的响应为1(用户中止)时,mapi.SendMailPopup将返回0。
我的问题是Windows Live邮件是否需要MAPI支持,如果没有人可以告诉我其他免费的Windows邮件客户端将提供所需的MAPI支持
答案 0 :(得分:1)
这令人困惑 - .NET解决方案是SMAPI,而不是MAPI。我不确定SMAPI的返回值有多可靠,特别是因为返回值是直接从您的默认MUA供应商的SMAPI实现返回的,并且其中至少有十几个。由于浏览器不使用返回值,并且它们是SMAPI的主要客户端,因此我不会依赖它。