Delphi   发布时间:2022-04-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了delphi – 如何在使用Synapse TMimeMess解码MIME时减少巨大的RAM使用量?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用TMimeMess来解码我的SMTP服务器的传入电子邮件
在Synapse上. @H_262_3@我发现用于解码50MB的MIME消息(简单的文本
附件),TMimeMess使用了600-800MB的内存.

@H_262_3@解码码在这里:

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;
@H_262_3@谢谢.

解决方法

Indy有TIdSMTP和TIdmessage组件用于此目的.它们在从服务器下载时动态解码SMTP数据,数据不会预先存储在内存中,默认情况下,附件存储在硬盘中的临时文件中. @H_262_3@您也可以通过他们的电子邮件地址或网站尝试并联系Synpse作者.

大佬总结

以上是大佬教程为你收集整理的delphi – 如何在使用Synapse TMimeMess解码MIME时减少巨大的RAM使用量?全部内容,希望文章能够帮你解决delphi – 如何在使用Synapse TMimeMess解码MIME时减少巨大的RAM使用量?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。