Hi, who can fix the first bug? or ideal There are Bugs in TMailMessage2000. Version 1.10.1 1. I use POP3 to get a Mail from Mail Server and put it in TMailMessage2000. That works fein, but if that mail contains an Attachment, and the Attachment is also in a Mail Format, like .msg File. Then in the TMailMessage2000 there is only a File named file_0, you can not open this file with aother Mail Client Program like Outlook or Outlook Express.!
The same Problem if Attachment is a Groupwise Mail or Luto Notes Mail. Some time the Attachment is lost. 2. A Mail has Plaintext Body, and contains a THML File as Attachment. I have Problem with such Mail, if I put this Mail in TMailMessage2000, then the contents of the Attachment is put in the Property TextHTML, and show in the HTML Body, there is not Attachment in TMailMessage2000. I fixed this bug with Source Code blow: function GetText(Info: String): Boolean; var Buffer: PChar; begin Result := False; if (FTextPlainPart = nil) and (FTextHTMLPart = nil) then //Z.Song 06.09.2005 Attachment should not in Body. begin if (FTextPlainPart = nil) and (Info = _T_P!
) then begin  
; if Part.Decode and (Part.Decoded.Size > 0) then begin FTextPlainPart := Part; GetMem(Buffer, Part.FDecoded.Size+1); StrLCopy(Buffer, Part.FDecoded.Memory, Part.FDecoded.Size); Buffer[Part.FDecoded.Size] := #0; FTextPlain.SetText(Buffer); FreeMem(Buffer); Result := True; end; end; if (FTextHTMLPart = nil) and (Info = _T_H) then begin !
nbsp; if Part.Decode and (Part.Decoded.Size > 0) then begin FTextHTMLPart := Part; GetMem(Buffer, Part.FDecoded.Size+1); StrLCopy(Buffer, Part.FDecoded.Memory, Part.FDecoded.Size); Buffer[Part.FDecoded.Size] := #0; FTextHTML.SetText(Buffer); FreeMem(Buffer); Result := True; end; end; end; end; begin 3 problems with address!
es like '"Name, Firstname" <na
me@...>' (changed GetDestAddress, GetDestName). function TMailMessage2000.GetDestAddress(Field: String; const Index: Integer): String; var Address, Dests: String; Count, Loop: Integer; Quote, Clammy: Boolean; begin Dests := TrimSpace(GetLabelValue(Field)); Count := 0; Address := ''; Quote := False; Clammy := False; for Loop := 1 to Length(Dests) do begin if Dests[Loop] = '"' then Quote := not Quote; if Dests[Loop] = '(' then //Z.Song 07.09.05 Clammy := True; if Dests[Loop] = ')' then //Z.Song 07.09.05 Clammy := False; if (not Quote) and (not Clammy) and (Dests[Loo!
p] in [',', ';']) then Inc(Count); if Count > Index then Break; if Count = Index then begin if Quote then //Z.Song 18.03.05 Address := Address + Dests[Loop] else if (not Clammy) and (not (Dests[Loop] in [',', ';', '<', '>', '[', ']', '(', ')', #32])) then Address := Address + Dests[Loop]; if (Dests[Loop] = '<') and (not Quote) then Address := ''; if (Dests[Loop] = '>') and (not Quote) then break; &n!
bsp; end; end; Result := TrimSpace(Address); en
d;
function TMailMessage2000.GetDestName(Field: String; const Index: Integer): String; var Dests: String; Loop: Integer; Count: Integer; Quote: Boolean; Name: String; begin Dests := TrimSpace(GetLabelValue(Field)); Count := 0; Name := ''; Quote := False; for Loop := 1 to Length(Dests) do begin if Dests[Loop] = '"' then begin Quote := not Quote; end else begin if (not Quote) and (Dests[Loop] in [',', ';']) then Inc(Count); if Count > Index then begin Name := ''; Break; &nbs!
p; end; if Count = Index then begin if (Dests[Loop] = '<') and (not Quote) then begin Break; end else begin if (Dests[Loop] = ')') and (not Quote) then //Z.Song 06.09.2005 break; //Z.Song 06.09.2005  !
; if (Dests[Loop] = '(') and (not Quote)
then //Z.Song 06.09.2005 Name := '' //Z.Song 06.09.2005 else if Quote or (not (Dests[Loop] in [',', ';'])) then Name := Name + Dests[Loop]; end; end; end; if Loop = Length(Dests) then Name := ''; end; Result := DecodeLine7Bit(TrimSpace(Name)); end;
who can fix the first bug? or ideal give me suggestions, advices, I can do it myself. Kind regards Zhentao Song |