Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Html mails empfangen (https://www.delphipraxis.net/15190-html-mails-empfangen.html)

Wadim 23. Jan 2004 16:22


Html mails empfangen
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi,

hier hab ich ein beispiel email programm - das auch geht, nur leider kann ich keine html emails empfangen - kann mir vielleicht einer sagen wie der quellcode heißt oder wo ich ihn einfügen soll??

hab hier auch schon im forum rumgesucht aber immer nur was von html mails versenden gefunden :-(

danke für die hilfe

mfg wadim

fkerber 23. Jan 2004 22:36

Re: Html mails empfangen
 
Hi!

Kannst du sie nicht empfangen oder nur nicht darstellen?
Sind HTML-Mails nicht einfach nur Text-Mails mit Quelltext anstatt unformatiertem Text?
Vielleicht irre ich mich, aber nur so als Gedanke.

Ciao fkerber

scp 24. Jan 2004 01:18

Re: Html mails empfangen
 
ZumBeispiel so:

1. Setze über dem Memo1 einen TWebBrowser rein, setze om OI Align auf alClient.

2. Finde die Prozedur
Delphi-Quellcode:
procedure TfrmMain.RetrieveExecute(Sender: TObject);
3. Setze zunächst am Anfang der Prozedur
Delphi-Quellcode:
   WebBrowser1.Visible := false;
4. Finde folgende Zeilen:
Delphi-Quellcode:
            begin //body text
               if Msg.MessageParts.Items[intIndex] is TIdText then
                  begin
                    Memo1.Lines.Clear;
                    Memo1.Lines.AddStrings(TIdText(Msg.MessageParts.Items[intIndex]).Body);
                  end;
5. Ersetze sie durch folgendes:
Delphi-Quellcode:
            begin //body text
               if Msg.MessageParts.Items[intIndex] is TIdText then
                  begin
                     If (Msg.MessageParts.Items[intIndex].ContentType = 'text/html') or
                        (Pos('text/html' + ';', Msg.MessageParts.Items[intIndex].ContentType) = 1) then
                       begin
                         WebBrowser1.Visible := true;
                         Memo1.Visible := false;

                         TIdText(Msg.MessageParts.Items[intIndex]).Body.SaveToFile('C:\_temp.htm');
                         WebBrowser1.Navigate('C:\_temp.htm');
                       end
                     else
                       begin
                         Memo1.Lines.Clear;
                         Memo1.Lines.AddStrings(TIdText(Msg.MessageParts.Items[intIndex]).Body);
                       end;
                  end;
'C:\_temp.htm' kannst du natürlich auch woanders speichern und später wieder löschen.

PS: Irgendwas stimmt mit diesem Demo allerdings nicht: Bei manchen Mails gibt er weder Text noch HTML aus (war schon vor meiner Änderung so).

Wadim 26. Jan 2004 18:05

Re: Html mails empfangen
 
hmm - ja so änlich hab ich es auch schon versucht, aber es klapt ja noch immer nicht :wall:

weiß vielleicht einer was da an der demo nicht funzt, das es keine html mails anzeigen kann??

ich glaubt das er die html mails gernicht runterläd, aber das ist nur eine vermutung :gruebel:

oder kennt vielleicht jemand eine andere demo die vielleicht funzt?? - bin für jede hilfe sehr dankbar

scp 27. Jan 2004 01:04

Re: Html mails empfangen
 
Hab den anderen Fehler gefunden. So gehts auf jeden Fall:
Delphi-Quellcode:
procedure TfrmMain.RetrieveExecute(Sender: TObject);
var
   stTemp: string;
   intIndex: Integer;
   li: TListItem;
begin
   stTemp := Statusbar1.Panels[1].text;
   if lvHeaders.Selected = nil then
      begin
         Exit;
      end;
   //initialise
   Showbusy(true);
   Msg.Clear;
   Memo1.Clear;
   lvMessageParts.Items.Clear;
   From.Caption := '';
   Cc.Caption := '';
   Subject.Caption := '';
   Date.Caption := '';
   Receipt.Caption := '';
   Organization.Caption := '';
   Priority.Caption := '';
   pnlAttachments.visible := false;
   WebBrowser1.Visible := false;
   Memo1.Visible := true;

   //get message and put into MSG
   ShowStatus('Retrieving message "' + lvHeaders.Selected.SubItems.Strings[3] + '"');
   POP.Retrieve(lvHeaders.Selected.Index + 1, Msg);
   statusbar1.Panels[0].text := lvHeaders.Selected.SubItems.Strings[3];

   //Setup fields on screen from MSG
   From.Caption := Msg.From.Text;
   Recipients.Caption := Msg.Recipients.EmailAddresses;
   Cc.Caption := Msg.CCList.EMailAddresses;
   Subject.Caption := Msg.Subject;
   Date.Caption := FormatDateTime('dd mmm yyyy hh:mm:ss', Msg.Date);
   Receipt.Caption := Msg.ReceiptRecipient.Text;
   Organization.Caption := Msg.Organization;
   Priority.Caption := IntToStr(Ord(Msg.Priority) + 1);

   // Manchmal hat die Mail keine mehreren Parts, dann muss man sie komplett laden
   If (Msg.ContentType = 'text/plain') or
      (Pos('text/plain' + ';', Msg.ContentType) = 1) then
     begin
       Memo1.Lines.Clear;
       Memo1.Lines.AddStrings(Msg.Body);
     end
   else
   If not (Msg.MessageParts.Count > 0) then
     begin
       Memo1.Lines.Clear;
       Memo1.Lines.Add('UNKNOWN CONTENT TYPE: ' + '"' + Msg.ContentType + '"');
       Memo1.Lines.AddStrings(Msg.Body);
     end;

   //Setup attachments list
   ShowStatus('Decoding attachments (' + IntToStr(Msg.MessageParts.Count) + ')');
   //ShowMessage('uhu');
   for intIndex := 0 to Pred(Msg.MessageParts.Count) do
      begin
         if (Msg.MessageParts.Items[intIndex] is TIdAttachment) then
            begin //general attachment
               pnlAttachments.visible := true;
               li := lvMessageParts.Items.Add;
               li.ImageIndex := 8;
               li.Caption := TIdAttachment(Msg.MessageParts.Items[intIndex]).Filename;
               li.SubItems.Add(TIdAttachment(Msg.MessageParts.Items[intIndex]).ContentType);
            end
         else
            begin //body text
               if Msg.MessageParts.Items[intIndex] is TIdText then
                  begin
                     If (Msg.MessageParts.Items[intIndex].ContentType = 'text/html') or
                        (Pos('text/html' + ';', Msg.MessageParts.Items[intIndex].ContentType) = 1) then
                       begin
                         WebBrowser1.Visible := true;
                         Memo1.Visible := false;

                         TIdText(Msg.MessageParts.Items[intIndex]).Body.SaveToFile('C:\_temp.htm');
                         WebBrowser1.Navigate('C:\_temp.htm');
                       end
                     else
                       begin
                         Memo1.Lines.Clear;
                         Memo1.Lines.AddStrings(TIdText(Msg.MessageParts.Items[intIndex]).Body);
                       end;

               pnlAttachments.visible := true;
               li := lvMessageParts.Items.Add;
               li.ImageIndex := 8;
               If (Msg.MessageParts.Items[intIndex].ContentType = 'text/html') or
                  (Pos('text/html' + ';', Msg.MessageParts.Items[intIndex].ContentType) = 1) then
                 begin
                   li.Caption := '[HTML]';
                 end
               else
                 begin
                   li.Caption := '[Text]';
                 end;
               li.SubItems.Add(Msg.MessageParts.Items[intIndex].ContentType);
               
                  end
               else
                  begin
               pnlAttachments.visible := true;
               li := lvMessageParts.Items.Add;
               li.ImageIndex := 8;
               li.Caption := '[Other]';
               li.SubItems.Add(Msg.MessageParts.Items[intIndex].ContentType);
                  end;
            end;
      end;
   ShowStatus(stTemp);
   Showbusy(false);
end;

Wadim 27. Jan 2004 13:13

Re: Html mails empfangen
 
SUUPPPEEEERRRR ^3 :thuimb: :thuimb: :thuimb: :thuimb:

fetten danke an dich :hello: - klapt alles :P

mfg wadim

einfach112 19. Jul 2006 21:36

Re: Html mails empfangen
 
Hallo ! Also diese Demo ist ja echt super!
Nur ein klitze kleines problem habe ich bei der ganzen sache !
ich würde mir gerne nur ganz bestimmte mails anzeigen lassen !
Also z.B. nur Emails die im Betreff stehen haben 'Wichtige Info'
oder vieleicht die vom absender 'Mail@mail.de' sind !
Habe jetzt schon stunden versucht mich irgendwo da zwischen den code zu fummeln aber leider nur immer
fehlermeldungen .....
Kann mir vieleicht einer sagen wo und wie ich das am besten anstell ?
Thx schon mal im voraus !
cu
einfach112

fkerber 19. Jul 2006 21:48

Re: Html mails empfangen
 
HI!

Was hast du denn genau gemacht bisher und was gab es dabei für Fehlermeldungen?


Ciao Frederic

Wadim 24. Aug 2006 21:52

Re: Html mails empfangen
 
hi,

kann mir einer sagen warum bei delphi 2005 personal er bei diesem quellcode nicht klarkommt?

genau hier (zwischen fehler), sagt der mir folgende fehlermeldung:

Operator ist auf diesem Operantentyp nicht anwendbar, mit delphi 7 klappt das alles wunderbar aber bei der 2005 Version kommt halt diese Fehlermeldung, bin absolut ratlos :(

Code:
for intIndex := 0 to Pred(Msg.MessageParts.Count) do
      begin
         if (Msg.MessageParts.Items[intIndex] is [fehler]TIdAttachment[/fehler]) then
            begin //general attachment
               pnlAttachments.visible := true;
               li := lvMessageParts.Items.Add;
               li.ImageIndex := 8;
               li.Caption := TIdAttachment(Msg.MessageParts.Items[intIndex]).Filename;
               li.SubItems.Add(TIdAttachment(Msg.MessageParts.Items[intIndex]).ContentType);
            end
         else
            begin //body text
               if Msg.MessageParts.Items[intIndex] is [fehler]TIdText[/fehler]then
                  begin

fkerber 24. Aug 2006 22:42

Re: Html mails empfangen
 
Hi!

Probiere mal das "Argument" der if-Abfrage zu klammern...


Ciao, Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 Uhr.
Seite 1 von 2  1 2      

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