亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? idmessageclient.pas

?? delphi indy9.0.18組件包
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
        LLine := ReadLn;
        if LLine = ADelim then
        begin
          Break;
        end;
        if LActiveDecoder = nil then
        begin
          LActiveDecoder := TIdMessageDecoderList.CheckForStart(AMsg, LLine);
        end;
        if LActiveDecoder = nil then begin
          if PWord(PChar(LLine))^= wDoublePoint then begin
            Delete(LLine,1,1);
          end;//if '..'
          AMsg.Body.Add(LLine);
        end else begin
          while LActiveDecoder <> nil do begin
            LActiveDecoder.SourceStream := TIdTCPStream.Create(Self);
            LActiveDecoder.ReadHeader;

            case LActiveDecoder.PartType of
              mcptUnknown:
              begin
                raise EIdException.Create(RSMsgClientUnkownMessagePartType);
              end;

              mcptText:
              begin
                LActiveDecoder := ProcessTextPart(LActiveDecoder);
              end;

              mcptAttachment:
              begin
                LActiveDecoder := ProcessAttachment(LActiveDecoder);
              end;
            end;
          end;
        end;
      until LMsgEnd;
    finally
      EndWork(wmRead);
    end;
  end;
end;


procedure TIdMessageClient.SendHeader(AMsg: TIdMessage);
var
  LHeaders: TIdHeaderList;
begin
  LHeaders := AMsg.GenerateHeader;
  try
    WriteStrings(LHeaders);
  finally
    FreeAndNil(LHeaders);
  end;
end;

procedure TIdMessageClient.SendBody(AMsg: TIdMEssage);
var
  i: Integer;
  LAttachment: TIdAttachment;
  LBoundary: string;
  LDestStream: TIdTCPStream;
  LMIMEAttachments: boolean;
  ISOCharset: string;
  HeaderEncoding: Char;  { B | Q }
  TransferEncoding: TTransfer;

  procedure WriteTextPart(ATextPart: TIdText);
  var
    Data: string;
    i: Integer;
  begin
    if Length(ATextPart.ContentType) = 0 then
      ATextPart.ContentType := 'text/plain'; {do not localize}
    if Length(ATextPart.ContentTransfer) = 0 then
      ATextPart.ContentTransfer := 'quoted-printable'; {do not localize}
    WriteLn('Content-Type: ' + ATextPart.ContentType); {do not localize}
    WriteLn('Content-Transfer-Encoding: ' + ATextPart.ContentTransfer); {do not localize}
    if Length(ATextPart.ContentID) <> 0 then
    begin
      WriteLn('Content-Id: ' + ATextPart.ContentID);
    end;
    WriteStrings(ATextPart.ExtraHeaders);
    WriteLn('');

    // TODO: Provide B64 encoding later
    // if AnsiSameText(ATextPart.ContentTransfer, 'base64') then begin
    //  LEncoder := TIdEncoder3to4.Create(nil);

    if AnsiSameText(ATextPart.ContentTransfer, 'quoted-printable') then
    begin
      for i := 0 to ATextPart.Body.Count - 1 do
      begin
        if Copy(ATextPart.Body[i], 1, 1) = '.' then
        begin
          ATextPart.Body[i] := '.' + ATextPart.Body[i];
        end;
        Data := TIdEncoderQuotedPrintable.EncodeString(ATextPart.Body[i] + EOL);
        if TransferEncoding = iso2022jp then
          Write(Encode2022JP(Data))
        else
          Write(Data);
      end;
    end

    else begin
      WriteStrings(ATextPart.Body);
    end;
    WriteLn('');
  end;

begin
  LMIMEAttachments := AMsg.Encoding = meMIME;
  LBoundary := '';

  InitializeISO(TransferEncoding, HeaderEncoding, ISOCharSet);
  BeginWork(wmWrite);
  try
    if AMsg.MessageParts.AttachmentCount > 0 then
    begin
      if LMIMEAttachments then
      begin
        WriteLn('This is a multi-part message in MIME format'); {do not localize}
        WriteLn('');
        if AMsg.MessageParts.RelatedPartCount > 0 then
        begin
          LBoundary := IndyMultiPartRelatedBoundary;
        end
        else begin
          LBoundary := IndyMIMEBoundary;
        end;
        WriteLn('--' + LBoundary);
      end
      else begin
        // It's UU, write the body
        WriteBodyText(AMsg);
        WriteLn('');
      end;

      if AMsg.MessageParts.TextPartCount > 1 then
      begin
        WriteLn('Content-Type: multipart/alternative; '); {do not localize}
        WriteLn('        boundary="' + IndyMultiPartAlternativeBoundary + '"'); {do not localize}
        WriteLn('');
        for i := 0 to AMsg.MessageParts.Count - 1 do
        begin
          if AMsg.MessageParts.Items[i] is TIdText then
          begin
            WriteLn('--' + IndyMultiPartAlternativeBoundary);
            DoStatus(hsStatusText,  [RSMsgClientEncodingText]);
            WriteTextPart(AMsg.MessageParts.Items[i] as TIdText);
            WriteLn('');
          end;
        end;
        WriteLn('--' + IndyMultiPartAlternativeBoundary + '--');
      end
      else begin
        if LMIMEAttachments then
        begin
          WriteLn('Content-Type: text/plain'); {do not localize}
          WriteLn('Content-Transfer-Encoding: 7bit'); {do not localize}
          WriteLn('');
          WriteBodyText(AMsg);
        end;
      end;

      // Send the attachments
      for i := 0 to AMsg.MessageParts.Count - 1 do
      begin
        if AMsg.MessageParts[i] is TIdAttachment then
        begin
          LAttachment := TIdAttachment(AMsg.MessageParts[i]);
          DoStatus(hsStatusText, [RSMsgClientEncodingAttachment]);
          if LMIMEAttachments then
          begin
            WriteLn('');
            WriteLn('--' + LBoundary);
            if Length(LAttachment.ContentTransfer) = 0 then
            begin
              LAttachment.ContentTransfer := 'base64'; {do not localize}
            end;
            if Length(LAttachment.ContentDisposition) = 0 then
            begin
              LAttachment.ContentDisposition := 'attachment'; {do not localize}
            end;
            if (LAttachment.ContentTransfer = 'base64') {do not localize}
              and (Length(LAttachment.ContentType) = 0) then
            begin
              LAttachment.ContentType := 'application/octet-stream'; {do not localize}
            end;
            WriteLn('Content-Type: ' + LAttachment.ContentType + ';'); {do not localize}
            WriteLn('        name="' + ExtractFileName(LAttachment.FileName) + '"'); {do not localize}
            WriteLn('Content-Transfer-Encoding: ' + LAttachment.ContentTransfer); {do not localize}
            WriteLn('Content-Disposition: ' + LAttachment.ContentDisposition +';'); {do not localize}
            WriteLn('        filename="' + ExtractFileName(LAttachment.FileName) + '"'); {do not localize}
            if Length(LAttachment.ContentID) <> 0 then
            begin
              WriteLn('Content-Id: ' + LAttachment.ContentID);
            end;
            WriteStrings(LAttachment.ExtraHeaders);
            WriteLn('');
          end;
          LDestStream := TIdTCPStream.Create(Self);
          try
            TIdAttachment(AMsg.MessageParts[i]).Encode(LDestStream);
          finally
            FreeAndNil(LDestStream);
          end;
          WriteLn('');
        end;
      end;
      if LMIMEAttachments then
      begin
        WriteLn('--' + LBoundary + '--');
      end;
    end
    // S.G. 21/2/2003: If the user added a single texpart message without filling the body
    // S.G. 21/2/2003: we still need to send that out
    else
    if (AMsg.MessageParts.TextPartCount > 1) or
       ((AMsg.MessageParts.TextPartCount = 1) and (AMsg.Body.Count = 0)) then
    begin
      WriteLn('This is a multi-part message in MIME format'); {do not localize}
      WriteLn('');
      for i := 0 to AMsg.MessageParts.Count - 1 do
      begin
        if AMsg.MessageParts.Items[i] is TIdText then
        begin
          WriteLn('--' + IndyMIMEBoundary);
          DoStatus(hsStatusText, [RSMsgClientEncodingText]);
          WriteTextPart(AMsg.MessageParts.Items[i] as TIdText);
        end;
      end;
      WriteLn('--' + IndyMIMEBoundary + '--');
    end

    else begin
      DoStatus(hsStatusText, [RSMsgClientEncodingText]);
      // Write out Body
      //TODO: Why just iso2022jp? Why not someting generic for all MBCS? Or is iso2022jp special?
      if TransferEncoding = iso2022jp then
      begin
        for i := 0 to AMsg.Body.Count - 1 do
        begin
          if Copy(AMsg.Body[i], 1, 1) = '.' then
          begin
            WriteLn('.' + Encode2022JP(AMsg.Body[i]));
          end

          else begin
            WriteLn(Encode2022JP(AMsg.Body[i]));
          end;
        end;
      end

      else begin
        WriteBodyText(AMsg);
      end;
    end;
  finally
    EndWork(wmWrite);
  end;
end;

{ 2001-Oct-29 Don Siders
 procedure TIdMessageClient.SendMsg(AMsg: TIdMessage);
  begin
    SendHeader(AMsg);
    WriteLn('');
    SendBody(AMsg);
  end;  }

// 2001-Oct-29 Don Siders Added AHeadersOnly parameter
// TODO: Override TIdMessageClient.SendMsg to provide socket, stream, and file
//  versions like TIdMessageClient.ProcessMessage?
procedure TIdMessageClient.SendMsg(AMsg: TIdMessage; const AHeadersOnly: Boolean = False);
begin
  if AMsg.NoEncode then begin
    WriteStringS(AMsg.Headers);
    WriteLn('');
    if not AHeadersOnly then begin
      WriteStrings(AMsg.Body);
    end;
  end else begin
    SendHeader(AMsg);
    WriteLn('');
    if (not AHeadersOnly) then SendBody(AMsg);
  end;
end;

function TIdMessageClient.ReceiveHeader(AMsg: TIdMessage; const AAltTerm: string = ''): string;
begin
  BeginWork(wmRead); try
    repeat
      Result := ReadLn;
      // Exchange Bug: Exchange sometimes returns . when getting a message instead of
      // '' then a . - That is there is no seperation between the header and the message for an
      // empty message.
      if ((Length(AAltTerm) = 0) and (Result = '.')) or
         ({APR: why? (Length(AAltTerm) > 0) and }(Result = AAltTerm)) then begin
        Break;
      end else if Result <> '' then begin
        AMsg.Headers.Append(Result);
      end;
    until False;
    AMsg.ProcessHeaders;
  finally EndWork(wmRead); end;
end;

procedure TIdMessageClient.ProcessMessage(AMsg: TIdMessage; AHeaderOnly: Boolean = False);
begin
  if IOHandler <> nil then
  begin
    if Length(ReceiveHeader(AMsg)) = 0 then begin
      // Only retreive the body if we do not already have a full RFC
      if (not AHeaderOnly) then begin
        ReceiveBody(AMsg);
      end;
    end;
  end;
end;

procedure TIdMessageClient.ProcessMessage(AMsg: TIdMessage; const AStream: TStream; AHeaderOnly: Boolean = False);
var
  LIOHSM: TIdIOHandlerStreamMsg;
begin
  LIOHSM := TIdIOHandlerStreamMsg.Create(nil); try
    LIOHSM.InputStream := AStream;
    LIOHSM.FreeStreams := False;
    IOHandler := LIOHSM; try
      Connect; try
        ProcessMessage(AMsg, AHeaderOnly);
      finally Disconnect; end;
    finally IOHandler := nil; end;
  finally FreeAndNil(LIOHSM); end;
end;

procedure TIdMessageClient.ProcessMessage(AMsg: TIdMessage; const AFilename: string; AHeaderOnly: Boolean = False);
var
  LStream: TFileStream;
begin
  LStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite);
  try
    ProcessMessage(AMsg, LStream, AHeaderOnly);
  finally
    FreeAndNil(LStream);
  end;
end;

procedure TIdMessageClient.WriteBodyText(AMsg: TIdMessage);
var
  i: integer;
begin
  for i := 0 to AMsg.Body.Count - 1 do
  begin
    if Copy(AMsg.Body[i], 1, 1) = '.' then
    begin
      WriteLn('.' + AMsg.Body[i]);
    end

    else begin
      WriteLn(AMsg.Body[i]);
    end;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产东北露脸精品视频| 国产精品69毛片高清亚洲| 国产精品色在线观看| 精品日韩一区二区三区| 9191久久久久久久久久久| 欧美人牲a欧美精品| 在线综合亚洲欧美在线视频| 69成人精品免费视频| 制服丝袜av成人在线看| 欧美大片一区二区| 精品久久99ma| 欧美国产精品久久| 亚洲乱码中文字幕综合| 一区二区三区成人| 日本麻豆一区二区三区视频| 免费在线观看视频一区| 国产真实乱对白精彩久久| 国产高清精品网站| 一本大道av伊人久久综合| 欧美亚洲精品一区| 欧美一区二区日韩| 国产亚洲欧美色| 亚洲日本va在线观看| 日韩成人一区二区三区在线观看| 精品在线一区二区三区| 91在线观看视频| 欧美精品123区| 久久人人超碰精品| 一区二区三区精品视频| 麻豆91精品91久久久的内涵| 99久久久精品| 欧美一区二区三区四区在线观看| 国产女同互慰高潮91漫画| 亚洲精品一二三| 加勒比av一区二区| 色偷偷88欧美精品久久久| 欧美成人三级在线| 亚洲午夜影视影院在线观看| 国产毛片精品视频| 欧美四级电影在线观看| 久久精品视频一区二区| 日韩综合小视频| 国产99久久精品| 日韩欧美中文字幕制服| 亚洲日本va在线观看| 国产一区二区三区久久久| 欧美亚洲尤物久久| 中文字幕在线不卡一区| 久久不见久久见中文字幕免费| av在线播放一区二区三区| 精品电影一区二区| 日韩高清中文字幕一区| 91在线国内视频| 欧美激情一区在线观看| 久久成人久久鬼色| 91精品国产综合久久精品图片| 亚洲视频狠狠干| 不卡视频免费播放| 久久久综合激的五月天| 日本女人一区二区三区| 欧美日韩国产123区| 夜夜爽夜夜爽精品视频| av电影一区二区| 亚洲国产精品成人综合| 黑人巨大精品欧美黑白配亚洲| 69久久夜色精品国产69蝌蚪网| 亚洲中国最大av网站| 99久久综合精品| 亚洲欧洲日本在线| 成人爽a毛片一区二区免费| 久久精品亚洲精品国产欧美| 精品综合久久久久久8888| 精品日本一线二线三线不卡| 免费在线看一区| 日韩一级大片在线| 久久er99热精品一区二区| 日韩精品中文字幕在线不卡尤物| 日韩**一区毛片| 日韩片之四级片| 国产精品一级片在线观看| 久久久综合九色合综国产精品| 国产成人在线观看免费网站| 国产日本亚洲高清| 91在线国内视频| 亚洲一级在线观看| 日韩三级伦理片妻子的秘密按摩| 久久www免费人成看片高清| 精品国产污网站| 成人激情综合网站| 亚洲影视在线观看| 91精品国产欧美一区二区| 看国产成人h片视频| 精品国产一区久久| 成人av动漫网站| 午夜激情一区二区三区| 91精选在线观看| 国产精品99久久久久久久vr| 综合久久综合久久| 3d成人动漫网站| 国产成人免费9x9x人网站视频| 亚洲男同性视频| 欧美电影在哪看比较好| 韩国av一区二区三区在线观看| 国产精品无码永久免费888| 在线免费精品视频| 激情小说亚洲一区| 伊人一区二区三区| 久久夜色精品国产噜噜av| 99综合电影在线视频| 免费一级片91| 亚洲四区在线观看| 日韩欧美一区电影| 色综合天天视频在线观看| 免费精品视频在线| 亚洲伦在线观看| 亚洲精品一区二区三区香蕉| 91在线视频18| 国产一区二区调教| 婷婷综合久久一区二区三区| 中文字幕欧美国产| 日韩视频一区二区在线观看| 97se亚洲国产综合自在线不卡| 青娱乐精品在线视频| 亚洲精品日韩综合观看成人91| 久久综合九色综合97婷婷| 欧美日韩在线不卡| 91免费看片在线观看| 国产黄色精品网站| 人人精品人人爱| 亚洲v中文字幕| 亚洲免费av高清| 国产精品视频九色porn| xnxx国产精品| 这里是久久伊人| 欧美久久一二区| 一本久久综合亚洲鲁鲁五月天| 成人免费观看av| 狠狠狠色丁香婷婷综合激情 | 偷偷要91色婷婷| 国产精品每日更新在线播放网址 | 国产精品一区2区| 蜜臀久久99精品久久久画质超高清| 亚洲综合精品久久| 综合久久久久久| 亚洲精品老司机| 亚洲美女区一区| 一区二区三区久久| 亚洲一级二级在线| 亚洲bt欧美bt精品777| 一区二区三区欧美在线观看| 亚洲男人电影天堂| 亚洲另类中文字| 亚洲一二三区在线观看| 亚洲成人免费观看| 日韩和欧美的一区| 日本免费在线视频不卡一不卡二| 午夜激情一区二区三区| 日韩av中文字幕一区二区三区| 日本欧美加勒比视频| 久久福利视频一区二区| 国产麻豆午夜三级精品| 福利视频网站一区二区三区| 国产69精品久久久久毛片| www.欧美色图| 欧美色综合天天久久综合精品| 欧美精品一级二级三级| 精品免费国产二区三区 | 成人深夜在线观看| 99国产精品99久久久久久| 亚洲成人免费视| 亚洲午夜精品在线| 免费在线观看视频一区| 国产在线播精品第三| 成人97人人超碰人人99| 欧美日韩国产一级| 日韩欧美一二三四区| 国产精品人人做人人爽人人添| 亚洲日穴在线视频| 奇米影视一区二区三区小说| 国产精品18久久久久久久久| 色综合久久88色综合天天| 日韩一级片在线播放| 国产精品不卡一区二区三区| 午夜精品久久久久久久久| 久久国产精品一区二区| av不卡一区二区三区| 日韩欧美一区二区免费| 中文字幕一区二区三区四区不卡| 亚洲一级不卡视频| 国产成人丝袜美腿| 91麻豆精品国产91久久久久久久久 | 懂色av中文一区二区三区| 成人的网站免费观看| 91麻豆精品国产91久久久久久久久 | 成人性生交大片免费看中文 | 91.xcao| 国产精品美女一区二区在线观看| 亚洲成人综合网站| 9久草视频在线视频精品| 精品国产91乱码一区二区三区|