Announcement

Collapse
No announcement yet.

htmlparts von emails auslesen (indy)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • htmlparts von emails auslesen (indy)

    hi, habe mit indy komponenten emails auszulesen versucht. normale testmails sind kein problem, aber auf die html mails bekomme ich unter body leider nichts.

    Wie lautet der Syntax um auf die html teile zu kommen ?
    thx

  • #2
    Falls hier keiner helfen kann, versuchs mal hier:<br>
    Delphi-PRAXiS: http://www.delphipraxis.net/

    lg
    frank

    Comment


    • #3
      Du musst die MessageParts auslesen, hier ein Beispiel, aus Zeitgründen leider ohne Kommentar:

      Zunächst msg.ContentType auslesen, da erfährst du, ob es sich um eine HTML-Mail handelt, hier sCTYpe := msg.ContentType.

      <pre>
      {Multipart-Message}
      if pos('multipart',lowerCase(sCType)) <> 0 then
      begin
      for i := 0 to Pred(Msg.MessageParts.Count) do
      begin
      if (Msg.MessageParts.Items[i] is TIdText) then
      begin
      if pos('plain',Msg.MessageParts.Items[i].ContentType) <> 0 then
      begin
      dm.MessagesAllTable.edit;
      if msg.Charset = 'UTF-8' then
      dm.MessagesAllTableBody.value := UTF8ToWideString(TIdText(Msg.MessageParts.Items[i]).Body.text)
      else
      dm.MessagesAllTableBody.value := TIdText(Msg.MessageParts.Items[i]).Body.text;
      dm.MessagesAllTableHTML.value := false;
      dm.MessagesAllTable.post;
      end else if pos('html',Msg.MessageParts.Items[i].ContentType) <> 0 then
      begin
      dm.MessagesAllTable.edit;
      if msg.Charset = 'UTF-8' then
      dm.MessagesAllTableBody.value := UTF8ToWideString(TIdText(Msg.MessageParts.Items[i]).Body.text)
      else
      dm.MessagesAllTableBody.value := TIdText(Msg.MessageParts.Items[i]).Body.text;
      dm.MessagesAllTableHTML.value := true;
      dm.MessagesAllTable.post;
      end else
      begin
      dm.MessagesAllTable.edit;
      if msg.Charset = 'UTF-8' then
      dm.MessagesAllTableBody.value := UTF8ToWideString(TIdText(Msg.MessageParts.Items[i]).Body.text)
      else
      dm.MessagesAllTableBody.value := TIdText(Msg.MessageParts.Items[i]).Body.text;
      dm.MessagesAllTableHTML.value := false;
      dm.MessagesAllTable.post;
      end;
      end else if (Msg.MessageParts.Items[i] is TIdAttachment) then
      begin
      dm.MessagesAllTable.edit;
      if dm.MessagesAllTableAnlagen.value = '' then
      dm.MessagesAllTableAnlagen.value := TIdAttachment(Msg.MessageParts.Items[i]).Filename
      else
      dm.MessagesAllTableAnlagen.value := dm.MessagesAllTableAnlagen.value + ';'
      + TIdAttachment(Msg.MessageParts.Items[i]).Filename;
      dm.MessagesAllTable.post;
      end;
      end; //for
      end

      Comment


      • #4
        Hallo,

        wollte fragen was die Funktion UTF8ToWideString
        macht bzw.existiert die in Delphi oder aus welcher Bibliothek kommt diese

        Comment


        • #5
          UTF8ToWideString wandelt einen UTF8-Codierten Ansi-String in einen Widestring um.

          Die Funktion UTF8ToWideString gibt es in der Jedi Code Libray (http://sourceforge.net/projects/jcl) oder ab D6 gibt es die Funktion UTF8Decode (System.pas

          Comment

          Working...
          X