4

我有一个旧版应用程序,可以创建带有附件的电子邮件。该代码使用 MAPI 接口来创建消息。这段代码已经工作了很长一段时间。

当应用程序在 Windows 7 64 位计算机上运行时,对 MAPILogon 的调用将失败并出现一般错误代码。

MAPI 和 Win7 64 是否不兼容?还是有一些我不知道的 COM 问题?

4

4 回答 4

7

看起来问题取决于您使用的 API 调用。

对 MAPISendMail 的调用应该没有问题。

对于要在 MAPI 应用程序中工作的所有其他 MAPI 方法和函数调用,MAPI 应用程序的位数(32 或 64)必须与要运行应用程序的计算机上的 MAPI 子系统的位数相同。

通常,32 位 MAPI 应用程序必须先在 64 位平台上运行(64 位 Windows 上的 64 位 Outlook),除非先将其重新构建为 64 位应用程序。

有关更详细的说明,请参阅在 32 位和 64 位平台上构建 MAPI 应用程序的 MSDN 页面

于 2010-03-10T20:00:35.297 回答
1

我在使用 Crystal Reports 8.5 的旧版应用程序中遇到了类似的情况。CR 报告查看器有一个“导出”按钮,它会打开一个对话框,让您选择一个“目标”,其中之一是“Microsoft Mail (MAPI)”。在 Windows 7 上导出到 MAPI 失败。

显然,问题是由于 Microsoft 在 Windows 7 中放弃了对“Simple MAPI”的支持。

我们能够通过 Microsoft 的此修补程序解决问题:http: //support.microsoft.com/kb/980681

这是其他一些讨论,可能对遇到类似问题的任何人都有帮助:

于 2010-07-09T17:46:45.413 回答
1

试试这个

@echo off 
REM NOTE: The MAPI32.dll must be included in the same directory as this patchfile!!
REM NOTE: change the username to corresponding if you're not on a domain remove @domain

takeown /f c:\windows\system32\mapi32.dll
cacls c:\windows\system32\mapi32.dll /G administrator@domain:F
ren c:\windows\system32\mapi32.dll c:\windows\system32\mapi32.dll.ORIGINAL
copy mapi32.dll c:\windows\system32\mapi32.dll

if NOT '%PROCESSOR_ARCHITECTURE%'=='AMD64' goto END
takeown /f c:\windows\sysWOW64\mapi32.dll
cacls c:\windows\sysWOW64\mapi32.dll /G administrator@domain:F
ren c:\windows\sysWOW64\mapi32.dll c:\windows\sysWOW64\mapi32.dll.ORIGINAL
copy mapi32.dll c:\windows\sysWOW64\mapi32.dll
:END
于 2010-07-28T13:48:26.433 回答
-2

不确定有关 MAPI 的具体情况,但可以在 .NET 中完成

于 2010-03-04T20:51:39.090 回答