Vizualizar Corpo De E-mail Com Imagens

Delphi

17/08/2007

Olá

Estou desenvolvendo um cliente de e-mail com indy, e já consigo ler as mensagens direito... O problema é que ainda não consigo vizualizar imagens que vêm junto no corpo da mensagem, como acontece com propagandas, por ex.
Baixá-las eu já consigo, só não consigo exibí-las mesmo. Estou usando o componente HTML Viewer para exibir as mensagens (http://pbear.com/htmlviewers.html).

O código que estou usando é o seguinte:

procedure TPages.lvHeaderClick(Sender: TObject);
var
   intIndex: Integer;
   li: TListItem;
   varnt: variant;
begin
  //inherited;
  if lvHeader.Selected = nil then Exit;
  Busy(true);
  idMsg.Clear;
  redtBody.Clear;
  lvAtt.Clear;
  //dm.tbDledMail.Locate(´MessageID´, idx[idx2[lvHeader.Selected.Index]], []);
  varnt := VarArrayCreate([0,1], varVariant);
    varnt[1]:= lvHeader.ItemFocused.SubItems.Strings[4];
    varnt[0]:= strtodatetime(lvHeader.ItemFocused.SubItems.Strings[2] + ´ ´ + lvHeader.ItemFocused.SubItems.Strings[3]);
  dm.tbDledMail.Locate(´date; size´, varnt, []);
  if not dm.tbDledMailcontent.IsNull
  then
    begin
      //redtbody.LoadStrings(dm.tbDledMailcontent.Value);
      memo1.Clear;
      memo1.Lines.Add(dm.tbDledMailcontent.Value);
      redtbody.LoadStrings(memo1.Lines);
      dm.tbAtts.Filter := ´codMsg = ´´´ + dm.tbDledMailcodMsg.AsString + ´´´´;
      dm.tbAtts.Filtered := true;
      dm.tbAtts.Active := true;
      if not dm.tbAtts.IsEmpty
      then
        begin
          dm.tbAtts.First;
          while not dm.tbAtts.Eof do
            begin
              li := lvAtt.Items.Add;
              li.ImageIndex := 8;
              li.Caption := ´´;
              li.SubItems.Add(dm.tbAttsnome.Value);
              li.SubItems.Add(dm.tbAttsTipo.Value);
              dm.tbAtts.Next;
            end;
        end;
      dm.tbAtts.Filtered := false;
      dm.tbAtts.Active := true;
    end
  else
    begin
    try
      begin
        Status(0, ´Recebendo mensagem...´);
        if not idpop3.Connected then PopConnect;
        idPOP3.Retrieve(dm.tbDledMailidx.Value, idMsg);
        //Setup attachments list
        idMsg.SaveToFile(´teste´);
        redtbody.LoadStrings(idMsg.Body);
        dm.tbDledMail.Edit;
        dm.tbDledMailcontent.Assign(idMsg.Body);
        dm.tbDledMail.Post;
        for intIndex := 0 to Pred(idMsg.MessageParts.Count) do
          if (idMsg.MessageParts.Items[intIndex] is TIdAttachment)
          then
            begin //general attachment
              li := lvAtt.Items.Add;
              li.ImageIndex := 8;
              li.Caption := TIdAttachment(idMsg.MessageParts.Items[intIndex]).Filename;
              li.SubItems.Add(TIdAttachment(idMsg.MessageParts.Items[intIndex]).ContentType);
              dm.tbAtts.Insert;
              dm.tbAttsnome.Value := TIdAttachment(idMsg.MessageParts.Items[intIndex]).Filename;
              dm.tbAttstipo.Value := TIdAttachment(idMsg.MessageParts.Items[intIndex]).ContentType;
              dm.tbAttsCodMsg.Value := dm.tbDledMailcodMsg.Value;
              dm.tbAtts.Post;
              //TIdAttachment(idMsg.MessageParts.Items[intIndex]).SaveToFile(
                             //TIdAttachment(idMsg.MessageParts.Items[intIndex]).Filename);
            end
          else
            if idMsg.MessageParts.Items[intIndex] is TIdText
            then
              begin
                dm.tbDledMail.Edit;
                dm.tbDledMailcontent.Assign(TIdText(idMsg.MessageParts.Items[intIndex]).Body);
                dm.tbDledMail.Post;
                //TIdText(idMsg.MessageParts.Items[intIndex]).Body.SaveToFile(
                                  //TIdText(idMsg.MessageParts.Items[intIndex]).DisplayName);
                //TIdText(idMsg.MessageParts.Items[intIndex]).Body;
                redtbody.LoadStrings(TIdText(idMsg.MessageParts.Items[intIndex]).Body);
              end
            else showmessage(´Exceção!´);

        Status(0, ´Mensagem recebida!´);
      end; //try
    except
      begin
        Status(0, ´Desconectado.´);
        showmessage(´Não foi possível receber a mensagem!´);
      end;
    end;
    //PopDisconnect;
    Busy(false);
    end;
end;//procedure


redtBody na verdade é o HTML Viewer.

O que eu deveria fazer para exibir as imagens junto da mensagem?


Mtlfk

Mtlfk

Curtidas 0
POSTAR