📄 dxgeneralmsgobject.pas
字号:
if UseCurrentParseCode then
DXMsgObject_Record.esINREPLYTO:=DXMsgObject_Record.esINREPLYTO+WorkString
else
DXMsgObject_Record.esINREPLYTO:=WorkString;
12:// 'REFERENCES'
if UseCurrentParseCode then
DXMsgObject_Record.esREFERENCES:=DXMsgObject_Record.esREFERENCES+WorkString
else
DXMsgObject_Record.esREFERENCES:=WorkString;
13:// 'KEYWORDS'
if UseCurrentParseCode then
DXMsgObject_Record.esKEYWORDS:=DXMsgObject_Record.esKEYWORDS+WorkString
else
DXMsgObject_Record.esKEYWORDS:=WorkString;
14:// 'ENCRYPTED'
if UseCurrentParseCode then
DXMsgObject_Record.esENCRYPTED:=DXMsgObject_Record.esENCRYPTED+WorkString
else
DXMsgObject_Record.esENCRYPTED:=WorkString;
15:// 'SUBJECT'
if UseCurrentParseCode then
DXMsgObject_Record.esSubject[DXMsgObject_Record.esSubject.Count-1]:=
DXMsgObject_Record.esSubject[DXMsgObject_Record.esSubject.Count-1]+WorkString
else
DXMsgObject_Record.esSubject.Append(WorkString);
16:// 'COMMENTS'
if UseCurrentParseCode then
DXMsgObject_Record.esComments[DXMsgObject_Record.esComments.Count-1]:=
DXMsgObject_Record.esComments[DXMsgObject_Record.esComments.Count-1]+WorkString
else
DXMsgObject_Record.esComments.Append(WorkString);
17:// 'RESENT-REPLY-TO'
if UseCurrentParseCode then
DXMsgObject_Record.esRESENTREPLYTO:=DXMsgObject_Record.esRESENTREPLYTO+WorkString
else
DXMsgObject_Record.esRESENTREPLYTO:=WorkString;
18:// 'RESENT-FROM'
if UseCurrentParseCode then
DXMsgObject_Record.esRESENTFROM:=DXMsgObject_Record.esRESENTFROM+WorkString
else
DXMsgObject_Record.esRESENTFROM:=WorkString;
19:// 'RESENT-SENDER'
if UseCurrentParseCode then
DXMsgObject_Record.esRESENTSENDER:=DXMsgObject_Record.esRESENTSENDER+WorkString
else
DXMsgObject_Record.esRESENTSENDER:=WorkString;
20:// 'RESENT-DATE'
if UseCurrentParseCode then
DXMsgObject_Record.esRESENTDATE:=DXMsgObject_Record.esRESENTDATE+WorkString
else
DXMsgObject_Record.esRESENTDATE:=WorkString;
21:// 'RESENT-TO'
if UseCurrentParseCode then
DXMsgObject_Record.esRESENTTO:=DXMsgObject_Record.esRESENTTO+WorkString
else
DXMsgObject_Record.esRESENTTO:=WorkString;
22:// 'RESENT-CC'
if UseCurrentParseCode then
DXMsgObject_Record.esRESENTCC:=DXMsgObject_Record.esRESENTCC+WorkString
else
DXMsgObject_Record.esRESENTCC:=WorkString;
23:// 'RESENT-BCC'
if UseCurrentParseCode then
DXMsgObject_Record.esRESENTBCC:=DXMsgObject_Record.esRESENTBCC+WorkString
else
DXMsgObject_Record.esRESENTBCC:=WorkString;
24:// 'RESENT-MESSAGE-ID'
if UseCurrentParseCode then
DXMsgObject_Record.esRESENTMESSAGEID:=DXMsgObject_Record.esRESENTMESSAGEID+WorkString
else
DXMsgObject_Record.esRESENTMESSAGEID:=WorkString;
26:// 'MIME-VERSION'
if UseCurrentParseCode then
DXMsgObject_Record.esMIMEVERSION:=DXMsgObject_Record.esMIMEVERSION+WorkString
else
DXMsgObject_Record.esMIMEVERSION:=WorkString;
27:// 'CONTENT-TYPE'
if UseCurrentParseCode then
DXMsgObject_Record.esCONTENTTYPE:=DXMsgObject_Record.esCONTENTTYPE+WorkString
else
DXMsgObject_Record.esCONTENTTYPE:=WorkString;
28:// 'CONTENT-TRANSFER-ENCODING'
if UseCurrentParseCode then
DXMsgObject_Record.esCONTENTTRANSFERENCODING:=DXMsgObject_Record.esCONTENTTRANSFERENCODING+WorkString
else
DXMsgObject_Record.esCONTENTTRANSFERENCODING:=WorkString;
29:// 'PATH'
if UseCurrentParseCode then
DXMsgObject_Record.esPATH:=DXMsgObject_Record.esPATH+WorkString
else
DXMsgObject_Record.esPATH:=WorkString;
30:// 'LINES'
if UseCurrentParseCode then
DXMsgObject_Record.esLINES:=DXMsgObject_Record.esLINES+WorkString
else
DXMsgObject_Record.esLINES:=WorkString;
31:// 'NEWSGROUPS'
if UseCurrentParseCode then
DXMsgObject_Record.esNEWSGROUPS:=DXMsgObject_Record.esNEWSGROUPS+WorkString
else
DXMsgObject_Record.esNEWSGROUPS:=WorkString;
32:// 'DISTRIBUTION'
if UseCurrentParseCode then
DXMsgObject_Record.esDISTRIBUTION:=DXMsgObject_Record.esDISTRIBUTION+WorkString
else
DXMsgObject_Record.esDISTRIBUTION:=WorkString;
33:// 'ORGANIZATION'
if UseCurrentParseCode then
DXMsgObject_Record.esORGANIZATION:=DXMsgObject_Record.esORGANIZATION+WorkString
else
DXMsgObject_Record.esORGANIZATION:=WorkString;
34:// 'RELAY-VERSION'
if UseCurrentParseCode then
DXMsgObject_Record.esRELAYVERSION:=DXMsgObject_Record.esRELAYVERSION+WorkString
else
DXMsgObject_Record.esRELAYVERSION:=WorkString;
35:// 'NNTP-POSTING-HOST'
if UseCurrentParseCode then
DXMsgObject_Record.esNNTPPOSTINGHOST:=DXMsgObject_Record.esNNTPPOSTINGHOST+WorkString
else
DXMsgObject_Record.esNNTPPOSTINGHOST:=WorkString;
36:// 'EXPIRES'
if UseCurrentParseCode then
DXMsgObject_Record.esEXPIRES:=DXMsgObject_Record.esEXPIRES+WorkString
else
DXMsgObject_Record.esEXPIRES:=WorkString;
37:// 'FOLLOWUP-TO'
if UseCurrentParseCode then
DXMsgObject_Record.esFOLLOWUPTO:=DXMsgObject_Record.esFOLLOWUPTO+WorkString
else
DXMsgObject_Record.esFOLLOWUPTO:=WorkString;
38:// 'CONTROL'
if UseCurrentParseCode then
DXMsgObject_Record.esCONTROL:=DXMsgObject_Record.esCONTROL+WorkString
else
DXMsgObject_Record.esCONTROL:=WorkString;
39:// 'APPROVED'
if UseCurrentParseCode then
DXMsgObject_Record.esAPPROVED:=DXMsgObject_Record.esAPPROVED+WorkString
else
DXMsgObject_Record.esAPPROVED:=WorkString;
else begin// unknown command - merge into "unknown stringlist"
if WorkString<>'' then begin
if UseCurrentParseCode then
DXMsgObject_Record.esUnknown[DXMsgObject_Record.esUnknown.Count-1]:=
DXMsgObject_Record.esUnknown[DXMsgObject_Record.esUnknown.Count-1]+WorkString
else
DXMsgObject_Record.esUnknown.Append(CurrentParseCode+': '+WorkString);
end;
end;
end;
Header.Delete(0);
cnt:=Header.Count;
end;
finally
header.EndUpdate;
end;
end;
procedure TDXGeneralMsgObject.HeaderClear; // 2.0
begin
HeaderInitialize;
end;
{$HINTS OFF}
procedure TDXGeneralMsgObject.LoadFromStream(Stream:TStream);
var
TSL:TStringList;
Loop:Integer;
begin
TSL:=TStringList.Create;
try
TSL.LoadFromStream(Stream);
Loop:=0;
while (Loop<TSL.Count)and(TSL[Loop]<>'') do
Inc(Loop);
while TSL.Count>Loop do
TSL.Delete(TSL.Count-1);
if TSL[Loop-1]='' then TSL.Delete(Loop-1);
HeaderInitialize;
HeaderProcess(TSL);
finally
TSL.Free;
TSL:=nil;
end;
end;
procedure TDXGeneralMsgObject.LoadFromFile(const Filename:string);
var
TSL:TStringList;
Loop:Integer;
begin
TSL:=TStringList.Create;
TSL.LoadFromFile(FileName);
Loop:=0;
while (Loop<TSL.Count)and(TSL[Loop]<>'') do
Inc(Loop);
while TSL.Count>Loop do
TSL.Delete(TSL.Count-1);
if TSL[Loop-1]='' then TSL.Delete(Loop-1);
HeaderInitialize;
HeaderProcess(TSL);
TSL.Free;
TSL:=nil;
end;
{$HINTS OFF}
procedure TDXGeneralMsgObject.SaveHeaderToList(var header:tstringlist);
var
Loop:Integer;
begin
if not Assigned(Header) then Exit;
with DXMsgObject_Record^ do begin
if esRECEIVED<>'' then Header.Append('Received: '+esReceived);
if esRELAYVERSION<>'' then
Header.Append('Relay-Version: '+esRelayVersion);
if esMESSAGEID<>'' then Header.Append('Message-ID: '+esMessageID);
if esPATH<>'' then Header.Add('Path: '+esPATH);
if esTO<>'' then Header.Append('To: '+esTo);
if esFROM<>'' then Header.Append('From: '+esFrom);
if esRETURNPATH<>'' then Header.Append('Return-Path: '+esRETURNPATH);
if esDATE<>'' then Header.Append('Date: '+esDATE);
if esSENDER<>'' then Header.Append('Sender: '+esSENDER);
if esCC<>'' then Header.Append('CC: '+esCC);
if esBCC<>'' then Header.Append('BCC: '+esBCC);
if esREPLYTO<>'' then Header.Append('Reply-To: '+esREPLYTO);
if esLINES<>'' then Header.Add('Lines: '+esLINES);
if esNEWSGROUPS<>'' then Header.Add('Newsgroups: '+esNEWSGROUPS);
if esINREPLYTO<>'' then Header.Append('In-Reply-To: '+esINReplyTO);
if esREFERENCES<>'' then Header.Append('References: '+esReferences);
if esKEYWORDS<>'' then Header.Append('Keywords: '+esKEYWORDS);
if esENCRYPTED<>'' then Header.Append('ENCRYPTED: '+esENCRYPTED);
if esRESENTREPLYTO<>'' then
Header.Append('Resent-Reply-To: '+esResentReplyTo);
if esRESENTFROM<>'' then Header.Append('Resent-From: '+esRESENTFROM);
if esRESENTSENDER<>'' then
Header.Append('Resent-Sender: '+esRESENTSENDER);
if esRESENTDATE<>'' then Header.Append('Resent-Date: '+esRESENTDATE);
if esRESENTTO<>'' then Header.Append('Resent-TO: '+esRESENTTO);
if esRESENTCC<>'' then Header.Append('Resent-CC: '+esRESENTCC);
if esRESENTBCC<>'' then Header.Append('Resent-BCC: '+esRESENTBCC);
if esRESENTMESSAGEID<>'' then
Header.Append('Resent-Message-ID: '+esRESENTMESSAGEID);
if esMIMEVERSION<>'' then Header.Append('MIME-Version: '+esMIMEVERSION);
if esCONTENTTYPE<>'' then Header.Append('Content-Type: '+esCONTENTTYPE);
if esCONTENTTRANSFERENCODING<>'' then
Header.Append('Content-Transfer-Encoding: '+esCONTENTTRANSFERENCODING);
if esDISTRIBUTION<>'' then Header.Append('Distribution: '+esDistribution);
if esORGANIZATION<>'' then Header.Append('Organization: '+esOrganization);
if esNNTPPOSTINGHOST<>'' then
Header.Append('NNTP-Posting-Host: '+esNNTPPOSTINGHOST);
if esEXPIRES<>'' then Header.Append('Expires: '+esEXPIRES);
if esFOLLOWUPTO<>'' then Header.Append('Followup-To: '+esFOLLOWUPTO);
if esCONTROL<>'' then Header.Append('Control: '+esCONTROL);
if esAPPROVED<>'' then Header.Append('Approved: '+esAPPROVED);
for Loop:=1 to esSUBJECT.count do
Header.Append('Subject: '+esSUBJECT[Loop-1]);
for Loop:=1 to esCOMMENTS.count do
Header.Append('Comments: '+esCOMMENTS[Loop-1]);
for Loop:=1 to esUNKNOWN.count do
Header.Append(esUNKNOWN[Loop-1]);
end;
end;
procedure TDXGeneralMsgObject.SaveToStream(Stream:TStream);
var
TSL:TStringList;
begin
TSL:=TStringList.Create;
Stream.Seek(0, 0);
SaveHeaderToList(TSL);
TSL.SaveToStream(Stream);
Stream.Seek(0, 0);
TSL.Free;
TSL:=nil;
end;
procedure TDXGeneralMsgObject.SaveToFile(const Filename:string);
var
MemoryStream:TMemoryStream;
begin
MemoryStream:=TMemoryStream.Create;
SaveToStream(MemoryStream);
MemoryStream.SaveToFile(FileName);
MemoryStream.Free;
MemoryStream:=nil;
end;
procedure TDXGeneralMsgObject.DeleteFile(const Filename:string);
begin
DeleteFile(FileName);
end;
function TDXGeneralMsgObject.ActualHeader:PDXMsgObjectRecord;
begin
Result:=DXMsgObject_Record;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -