【发布时间】:2011-03-18 04:01:08
【问题描述】:
我有 Windows 7 64 位,我的 delphi sendmail 在尝试第二次发送电子邮件时崩溃,有时甚至只是等待第一次发送邮件完成。相同的应用程序适用于 windows vista。
以下是我发送邮件的测试过程:
procedure TForm1.SendMail(const Subject, FileName: String);
var tmpName2, PFullFilePath, PSubject : Array[0..MAX_PATH] of AnsiChar;
MapiMessage : TMapiMessage;
MapiFileDesc : TMapiFileDesc;
MError : Cardinal;
begin
with MapiFileDesc do
begin
ulReserved:=0;
flFlags:=0;
nPosition:=Cardinal(-1);
StrPCopy(PFullFilePath, FileName);
lpszPathName:=PFullFilePath;
StrPCopy(tmpName2,ExtractFileName(FileName));
lpszFileName:=tmpName2;
lpFileType:=nil;
end;
with MapiMessage do
begin
ulReserved := 0;
StrPCopy(PSubject, Subject);
lpszSubject := PSubject;
lpszNoteText := nil;
lpszMessageType := nil;
lpszDateReceived := nil;
lpszConversationID := nil;
flFlags := 0;
lpOriginator := nil;
nRecipCount := 0;
lpRecips := nil;
nFileCount := 1;
lpFiles := @MapiFileDesc;
end;
MError:=MapiSendMail(0,Application.Handle, MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);
if MError<>0 then
Raise Exception.CreateFmt(IntToStr(MError), [MError]);
end;
我收到的错误/崩溃消息:
问题签名:
问题事件名称:APPCRASH
应用程序名称:mapitestp.exe
应用程序版本:0.0.0.0
申请时间戳:4d82c905
故障模块名称:ntdll.dll
故障模块版本:6.1.7600.16559
故障模块时间戳:4ba9b29c
异常代码:4000001f
异常偏移量:000a1dcf 操作系统版本:6.1.7600.2.0.0.256.1
区域设置 ID:1033
附加信息 1:d1ab
附加信息 2:d1ab624ec7d094c26a73530c245a3468
附加信息 3:d1ab
附加信息4:d1ab624ec7d094c26a73530c245a3468
任何帮助或想法将不胜感激。谢谢
【问题讨论】:
-
是否安装了 64 位 MAPI 版本?
-
@mjn:32 位应用程序将使用 32 位映射。
-
@Remko:32 位应用程序可以通过 OS 提供的网桥将 64 位 MAPI 用于 MapiSendMail 功能 - 这在 MSDN 中有记录:msdn.microsoft.com/en-us/library/dd941355.aspx
标签: delphi mapi windows-7-x64 mapisendmail