2

我有 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:d1ab624ec7d094c236a73530c245a

任何帮助或想法将不胜感激。谢谢

4

1 回答 1

1

看看 Embarcadero 的这个链接,它可能是一些 Unicode 问题。

希望它可以帮助你。

于 2011-03-18T05:58:39.630 回答