Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi MIME-Mails im TWebbrowser (Indy) (https://www.delphipraxis.net/71716-mime-mails-im-twebbrowser-indy.html)

Grolle 19. Jun 2006 21:58


MIME-Mails im TWebbrowser (Indy)
 
Hi,

kann mir jemand einen Weg empfehlen, wie ich MIME-Type Mails vernunftig im TWebbrowser
darstellen kann? (HTML-Mails speichere ich und lade sie dann in den TWebbrowser)

Viele Grüße...

marabu 20. Jun 2006 07:49

Re: MIME-Mails im TWebbrowser (Indy)
 
Hallo Stefan,

kannst du etwas genauer erklären, was exakt dein Problem ist? Du schreibst, dass du HTML-Mails speicherst und dann in die WebBrowser-Komponente lädst. Ist die Anzeige nicht korrekt? Kannst du eine TestMail zur Verfügung stellen?

Grüße vom marabu

Grolle 20. Jun 2006 08:35

Re: MIME-Mails im TWebbrowser (Indy)
 
Hallo Marabu,

die Mails sortiere ich wie folgt nach Text oder Html-Mail:
Delphi-Quellcode:
      begin
        pop.Retrieve(StrToInt(headers.Selected.SubItems.Strings[2]), IdMessage1);
        IdMessage1.Body.SaveToFile(ExtractFilePath(ParamStr(0))+'temp.html');
        list := TStringList.Create;
        list.LoadFromFile(ExtractFilePath(ParamStr(0))+'temp.html');
        for i := 0 to list.Count-1 do
          begin
            if pos('<html>',list.Text) = 0 then
              begin
                html := TStringList.Create;
                html.Add('<html>');
                html.Add(' <body>');
                html.Add('   <pre>');
                html.AddStrings(list);
                html.Add('   </pre>');
                html.Add(' </body>');
                html.Add('</html>');
                html.SaveToFile(ExtractFilePath(ParamStr(0))+'temp.html');
                html.free;
              end;
            end;
        list.Free;
        WebBrowser1.Navigate(ExtractFilePath(ParamStr(0))+'temp.html');
      end;
BEi reinen HTML- bzw. Textmails klappt das auch ohne Probleme. Bei MIME-Mails
sieht das dann so im Webbrowser aus:

Zitat:

This is a multi-part message in MIME format.--------------040509000609040303060109 Content-Type: multipart/alternative; boundary="------------000209040805070105090501"--------------
000209040805070105090501 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Text der dargestellt werden sollte
--

http://www.stefangöppert.de <http://www.stefang%F6ppert.de>

... usw.
In der Mail steht eigentlich dann nur noch unlesbarer Text (bzw. wird so dargestellt)!?

marabu 20. Jun 2006 08:54

Re: MIME-Mails im TWebbrowser (Indy)
 
Hallo Stefan,

nach dem Retrieve(id, msg) solltest du mit msg.IsEncoded prüfen ob eine MIME encoded mail vorliegt. Wenn ja, dann solltest du über msg.MessageParts versuchen auf den Content zuzugreifen.

marabu

Grolle 21. Jun 2006 23:18

Re: MIME-Mails im TWebbrowser (Indy)
 
Hi,

ich habe den Code jetzt so erweitert:
Delphi-Quellcode:
procedure TForm1.ToolButton2Click(Sender: TObject);
var
i : integer;
begin
  if headers.Selected = nil then Exit;
  IdMessage1.Clear;
  if not pop.Connected then pop.Connect;
  try
    if pop.CheckMessages > 0 then
      begin
        pop.Retrieve(StrToInt(headers.Selected.SubItems.Strings[2]), IdMessage1);
        if IdMessage1.IsEncoded then
          IdMessage1.Body.SaveToFile(ExtractFilePath(ParamStr(0))+'temp.html')
        else
          begin
            for i := 0 to IdMessage1.MessageParts.Count-1 do
              begin
                if IdMessage1.MessageParts.Items[i] is TIdText then
                  TIdText(IdMessage1.MessageParts.Items[i]).Body.SaveToFile(ExtractFilePath(ParamStr(0))+'temp.html');
              end;
          end;
        WebBrowser1.Navigate(ExtractFilePath(ParamStr(0))+'temp.html');
      end
  finally
    pop.Disconnect;
  end;
end;
Jetzt werden die anderen Mails nicht vernünftig dargestellt?!?

marabu 22. Jun 2006 06:57

Re: MIME-Mails im TWebbrowser (Indy)
 
Hallo Stefan,

sieht aus als ob du Aktion und Bedingung falsch zuordnest - oder? Wenn die mail MIME-kodiert ist (IsEncoded) dann sollst du die MessageParts untersuchen. Testen kann ich es leider nicht.

marabu

Grolle 22. Jun 2006 08:25

Re: MIME-Mails im TWebbrowser (Indy)
 
Hallo,
ich habs jetzt umgedreht und die Text- und HTML-Mails werden wieder korrekt angezeigt.
Bei den MIME-Mails steht jetzt allerdings nur:
Zitat:

This is a multi-part message in MIME format.
Das ist alles?!? Ist das jetzt der falsche Part, oder wo liegt der Fehler? In der Indy-Doku
kann ich diesbezüglich nix finden :?

Viele Grüße...

marabu 22. Jun 2006 08:31

Re: MIME-Mails im TWebbrowser (Indy)
 
Bei mehreren Parts überschreibst du die Ausgabe mehrfach und zeigst nur den zuletzt geschriebenen Inhalt an - und der scheint nicht das gesuchte zu sein. Schau doch da noch mal nach.

marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz