Sorry,我以为你问的是Logon的问题
收信跟Logon没有直接关系,MapiFindNext是查看是否有信,MapiReadMail是收信
////////////////////////////////////////////////////////////////////////
//功能:
// 收一封信(调用时,如果返回值为Success_success,可以在调用,直到把信收完为止)
//
//参数:
// TmpDir:存放Attach的目录
// Subject:返回收到邮件的Subject
// BodyStr:返回收到邮件的内容
// AttachList:返回所有的Attach的文件名称
//返回值:
// -1--会话已断开;
// 0:成功收到一封信;
// 1--没有信;
// 2--其它情况;
///////////////////////////////////////////////////////////////////////
function RecExMail(TmpDir : String;var Subject: String;var BodyStr: String;var AttachList: TStringList): Integer;
var
i,ulResult : Integer;
lpStr : PChar;
lpMsg : PMapiMessage;
PathName,FileName : String;
ThisFileDesc : PMapiFileDesc;
begin
if lhSession = 0 then begin
Result := -1;
Exit;
end;
lpMsg := nil;
lpStr := PChar( Allocmem( 512 * Sizeof(Char)));
ulResult := MapiFindNext(lhSession,0,nil,nil,0,0,lpStr);
case ulResult of
SUCCESS_SUCCESS : begin
if MapiReadMail(lhSession,0,lpStr,0,0,lpMsg) = SUCCESS_SUCCESS then begin
Subject := lpMsg.lpszSubject;
BodyStr := lpMsg.lpszNoteText;
for i := 0 to lpMsg.nFileCount - 1 do begin
ThisFileDesc := PMapiFileDesc( PChar(lpMsg.lpFiles) + i * Sizeof(MapiFileDesc) );
PathName := ThisFileDesc.lpszPathName;
ShowMessage('PathName'+PathName);
FileName := ExtractFileName( PathName );
CopyFile( PChar(PathName) ,PChar( TmpDir + FileName ),False);
AttachList.Add( TmpDir + FileName );
end;
end;
MapiDeleteMail(lhSession,0,lpStr,0,0);
ulResult:=0;
end;
MAPI_E_NO_MESSAGES : ulResult := 1;
else
ulResult := 2;
end;
SysFreemem(lpStr);
if lpMsg <> nil then SysFreemem(lpMsg);
Result := ulResult ;
end;
顺便说一句,收发信件用Mapi并不是一个好方法,找一个好的Smtp控件和Pop3控
件要方便得多.言下之意
elphi的Smtp和Pop3控件是可以用的垃圾