Delphi-PRAXiS

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

Wadim 25. Aug 2006 06:13

Re: Html mails empfangen
 
Zitat:

Zitat von fkerber
Hi!

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


Ciao, Frederic

hmm geht auch nicht, oder wie meinst du das genau?

der sagt mir eigentlich auch das TidAttachment und TidText Undefinierte bezeichner sind, aber warum klappt es dann bei der Delphi 7 Version?

Klaus01 25. Aug 2006 07:03

Re: Html mails empfangen
 
Fehlt Dir vielleicht eine Unit in den Uses?
Hast Du eine andere Indy Version seit Delphi7?

Grüße
Klaus

Wadim 25. Aug 2006 15:15

Re: Html mails empfangen
 
Zitat:

Zitat von Klaus01
Fehlt Dir vielleicht eine Unit in den Uses?
Hast Du eine andere Indy Version seit Delphi7?

Grüße
Klaus

So Problem gelöst, hatte eine andere Indy Version und muste in die uses IdAttachmentFile und IdText einfügen, danke für die Info ;)

mfg wadim


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:11 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