Tôi sử dụng TMimeMess để giải mã e-mail đến của máy chủ SMTP dựa trên trên Synapse.Làm thế nào để giảm dung lượng RAM lớn khi giải mã MIME bằng cách sử dụng Synapse TMimeMess?
Tôi phát hiện ra rằng để giải mã tin nhắn MIME 50MB (văn bản đơn giản với tệp đính kèm), TMimeMess đã sử dụng 600-800MB bộ nhớ.
giải mã mã ở đây:
FMimeMsg.Header.DecodeHeaders(FMimeMsg.MessagePart.Lines);
FMimeMsg.MessagePart.DecomposeParts;
ExtractPartsFromMess(FMimeMsg.MessagePart);
...
procedure ExtractPartsFromMess(AMimePart: TMimePart);
var i: integer;
begin
if AMimePart.GetSubPartCount = 0 then
Begin
if (AMimePart.PrimaryCode = MP_TEXT) then
Begin
AMimePart.DecodePart;
FBody.Add(string(ReadStrFromStream(AMimePart.DecodedLines,AMimePart.DecodedLines.Size)));
end
else if (AMimePart.PrimaryCode = MP_BINARY) then
Begin
if AMimePart.FileName <> '' then
Begin
AMimePart.DecodePart;
AMimePart.DecodedLines.SaveToFile(FPathToIncomingFolder+AMimePart.FileName);
end;
end;
end
else
Begin
for i:=0 to AMimePart.GetSubPartCount-1 do
Begin
ExtractPartsFromMess(AMimePart.GetSubPart(i));
end;
end;
end;
Cảm ơn.
Bạn đã liên hệ với tác giả Synpse về vấn đề này chưa? –
Tôi đã đăng tin nhắn này lên đồng bộ công cộng, nhưng không ai trả lời. – krtl
có thể sử dụng bộ giải mã indy MIME thay thế không? – krtl