//****************************收取指定的邮件************************************ function Trec_mail.Get_Receive(lett_index: OleVariant): OleVariant; var nmm_strUidl,nmm_strAttachFileName:string; nmm_strDirName,nmm_strUrlPath:string; nmm_strAttachFileUrl,nmm_strAttachFilePath:widestring; nmm_index:integer; nmm_strbody:widestring; nmm_strdecode:string; begin try nmg_intLetterIndex :=strtoint(lett_index); //全局变量邮件id nmm_strUidl := trim(get_uid); nmg_msgBody.clear; nmg_msgBody.NoDecode := false; nmg_msgBody.IsEncoded := true; try nmg_pop.Retrieve(nmg_intLetterindex,nmg_msgBody); except result:=''; exit; end; nmg_msgHead.clear; nmg_msgHead.NoDecode := false; nmg_msgHead.IsEncoded := true; try nmg_pop.RetrieveHeader(nmg_intLetterIndex,nmg_msgHead); except result:=''; exit; end; if nmg_strMailUserDir='' then begin nmm_strDirName := nmg_strRootDir+nmm_strUidl; nmm_strUrlPath := nmg_strRootUrlPath+nmm_strUidl; end else begin nmm_strDirName := nmg_strRootDir+nmg_strMailUserDir+'\'+nmm_strUidl; nmm_strUrlPath := nmg_strRootUrlPath+nmg_strMailUserDir+'/'+nmm_strUidl; end; ForceDirectories(nmm_strDirName); FormAttachHtm; nmg_blnHasAttOut := false; //*************************正文的下载*************************************** try if nmg_msgBody.messageparts.Count=0 then nmg_stsContent :=nmg_msgBody.Body else begin for nmm_index:=0 to pred(nmg_msgBody.messageparts.Count) do if nmg_msgBody.MessageParts.Items[nmm_index] is TIdText then nmg_stsContent := TIdText(nmg_msgBody.MessageParts.Items[nmm_index]).Body; end; except result:=''; exit; end; if (pos('HTML>',nmg_stsContent.text))or(pos('html>',nmg_stsContent.text))<1 then nmg_stsContent.text:='<pre>'+nmg_stsContent.text+'</pre>'; //*************************附件的下载*************************************** for nmm_index:=0 to pred(nmg_msgBody.messageparts.Count) do begin if (nmg_msgBody.MessageParts.Items[nmm_index] is TIdAttachment) then begin nmm_strAttachFileName :=DecodeHeader(TIdAttachment(nmg_msgBody.MessageParts.Items[nmm_index]).Filename); nmm_strAttachFileUrl := nmm_strUrlPath; nmm_strdecode:=(tidattachment(nmg_msgBody.MessageParts.Items[nmm_index]).ContentDisposition); if trim(nmm_strdecode)<>'' then begin nmm_strAttachFilePath := nmm_strDirName + '\attachment\'+inttostr(nmm_index); ForceDirectories(nmm_strAttachFilePath); nmm_strAttachFileUrl := nmm_strAttachFileUrl+'/attachment/'+inttostr(nmm_index)+'/'+nmm_strAttachFileName; nmm_strAttachFilePath := nmm_strAttachFilePath+'\'+nmm_strAttachFileName; try if not fileexists(nmm_strAttachFilePath) then tidattachment(nmg_msgBody.MessageParts.Items[nmm_index]).SaveToFile(nmm_strAttachFilePath); except continue; end; nmg_stsAttach.add('<a href="'+ nmm_strAttachFileUrl+'" target=_blank> '+nmm_strAttachFileName+'</a><BR><br>'); nmg_blnHasAttOut := true ; end else begin nmm_strAttachFilePath := nmm_strDirName+'\Image\'+inttostr(nmm_index); nmm_strAttachFileUrl := nmm_strAttachFileUrl+'\Image\'+inttostr(nmm_index)+'\'+nmm_strAttachFileName; ForceDirectories(nmm_strAttachFilePath); nmm_strAttachFilePath := nmm_strAttachFilePath+'\'+nmm_strAttachFileName; try if not fileexists(nmm_strAttachFilePath) then tidattachment(nmg_msgBody.MessageParts.Items[nmm_index]).SaveToFile(nmm_strAttachFilePath); except continue; end; //*************************替换图片src**************** nmg_Reg.Expression :='src\s*=\s*"?[^\s]*@[^\s]*"?'; nmm_strbody :=nmg_stsContent.text; if nmg_reg.Exec(nmm_strbody) then begin nmm_strbody:=StringReplace(nmm_strbody,nmg_reg.Match[0], 'src='+nmm_strAttachFileUrl,[rfReplaceAll, rfIgnoreCase]); nmg_stsContent.Text := nmm_strbody; end; //**************************************************** end; end; end; if nmg_blnHasAttOut =true then FinishAttachHtm(nmm_strDirName+'\mailatt.htm'); FinishContentHtm(nmm_strDirName+'\mailcont.htm'); //******************************收取完成************************************ nmg_reRunTimeErr:=reSuccess; nmg_arrAllErrString[Ord(reGetReceiveErr)] := '收取指定邮件成功.'; except ON E:Exception do begin Result := ''; nmg_reRunTimeErr:=reGetReceiveErr; nmg_arrAllErrString[Ord(nmg_reRunTimeErr)] := E.Message; end; end; Result := nmg_reRunTimeErr; end;
function Trec_mail.Get_Receive(lett_index: OleVariant): OleVariant;
var
nmm_strUidl,nmm_strAttachFileName:string;
nmm_strDirName,nmm_strUrlPath:string;
nmm_strAttachFileUrl,nmm_strAttachFilePath:widestring;
nmm_index:integer;
nmm_strbody:widestring;
nmm_strdecode:string;
begin
try
nmg_intLetterIndex :=strtoint(lett_index); //全局变量邮件id
nmm_strUidl := trim(get_uid);
nmg_msgBody.clear;
nmg_msgBody.NoDecode := false;
nmg_msgBody.IsEncoded := true;
try
nmg_pop.Retrieve(nmg_intLetterindex,nmg_msgBody);
except
result:='';
exit;
end;
nmg_msgHead.clear;
nmg_msgHead.NoDecode := false;
nmg_msgHead.IsEncoded := true;
try
nmg_pop.RetrieveHeader(nmg_intLetterIndex,nmg_msgHead);
except
result:='';
exit;
end;
if nmg_strMailUserDir='' then
begin
nmm_strDirName := nmg_strRootDir+nmm_strUidl;
nmm_strUrlPath := nmg_strRootUrlPath+nmm_strUidl;
end
else
begin
nmm_strDirName := nmg_strRootDir+nmg_strMailUserDir+'\'+nmm_strUidl;
nmm_strUrlPath := nmg_strRootUrlPath+nmg_strMailUserDir+'/'+nmm_strUidl;
end;
ForceDirectories(nmm_strDirName);
FormAttachHtm;
nmg_blnHasAttOut := false;
//*************************正文的下载***************************************
try
if nmg_msgBody.messageparts.Count=0 then nmg_stsContent :=nmg_msgBody.Body
else begin
for nmm_index:=0 to pred(nmg_msgBody.messageparts.Count) do
if nmg_msgBody.MessageParts.Items[nmm_index] is TIdText then nmg_stsContent := TIdText(nmg_msgBody.MessageParts.Items[nmm_index]).Body;
end;
except
result:='';
exit;
end;
if (pos('HTML>',nmg_stsContent.text))or(pos('html>',nmg_stsContent.text))<1 then nmg_stsContent.text:='<pre>'+nmg_stsContent.text+'</pre>';
//*************************附件的下载***************************************
for nmm_index:=0 to pred(nmg_msgBody.messageparts.Count) do
begin
if (nmg_msgBody.MessageParts.Items[nmm_index] is TIdAttachment) then
begin
nmm_strAttachFileName :=DecodeHeader(TIdAttachment(nmg_msgBody.MessageParts.Items[nmm_index]).Filename);
nmm_strAttachFileUrl := nmm_strUrlPath;
nmm_strdecode:=(tidattachment(nmg_msgBody.MessageParts.Items[nmm_index]).ContentDisposition);
if trim(nmm_strdecode)<>'' then
begin
nmm_strAttachFilePath := nmm_strDirName + '\attachment\'+inttostr(nmm_index);
ForceDirectories(nmm_strAttachFilePath);
nmm_strAttachFileUrl := nmm_strAttachFileUrl+'/attachment/'+inttostr(nmm_index)+'/'+nmm_strAttachFileName;
nmm_strAttachFilePath := nmm_strAttachFilePath+'\'+nmm_strAttachFileName;
try
if not fileexists(nmm_strAttachFilePath) then
tidattachment(nmg_msgBody.MessageParts.Items[nmm_index]).SaveToFile(nmm_strAttachFilePath);
except
continue;
end;
nmg_stsAttach.add('<a href="'+ nmm_strAttachFileUrl+'" target=_blank> '+nmm_strAttachFileName+'</a><BR><br>');
nmg_blnHasAttOut := true ;
end
else
begin
nmm_strAttachFilePath := nmm_strDirName+'\Image\'+inttostr(nmm_index);
nmm_strAttachFileUrl := nmm_strAttachFileUrl+'\Image\'+inttostr(nmm_index)+'\'+nmm_strAttachFileName;
ForceDirectories(nmm_strAttachFilePath);
nmm_strAttachFilePath := nmm_strAttachFilePath+'\'+nmm_strAttachFileName;
try
if not fileexists(nmm_strAttachFilePath) then
tidattachment(nmg_msgBody.MessageParts.Items[nmm_index]).SaveToFile(nmm_strAttachFilePath);
except
continue;
end;
//*************************替换图片src****************
nmg_Reg.Expression :='src\s*=\s*"?[^\s]*@[^\s]*"?';
nmm_strbody :=nmg_stsContent.text;
if nmg_reg.Exec(nmm_strbody) then
begin
nmm_strbody:=StringReplace(nmm_strbody,nmg_reg.Match[0],
'src='+nmm_strAttachFileUrl,[rfReplaceAll, rfIgnoreCase]);
nmg_stsContent.Text := nmm_strbody;
end;
//****************************************************
end;
end;
end;
if nmg_blnHasAttOut =true then FinishAttachHtm(nmm_strDirName+'\mailatt.htm');
FinishContentHtm(nmm_strDirName+'\mailcont.htm');
//******************************收取完成************************************
nmg_reRunTimeErr:=reSuccess;
nmg_arrAllErrString[Ord(reGetReceiveErr)] := '收取指定邮件成功.';
except
ON E:Exception do
begin
Result := '';
nmg_reRunTimeErr:=reGetReceiveErr;
nmg_arrAllErrString[Ord(nmg_reRunTimeErr)] := E.Message;
end;
end;
Result := nmg_reRunTimeErr;
end;
FormAttachHtm,DecodeHeader,FinishAttachHtm,FinishContentHtm,nmg_stsAttach
先谢了
不过还是谢谢 zuoansuifeng(左岸)散分结贴了