Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   email abrufen: Kopie am Server belassen (https://www.delphipraxis.net/192621-email-abrufen-kopie-am-server-belassen.html)

erich.wanker 5. Mai 2017 13:01

email abrufen: Kopie am Server belassen
 
Hallo Leute,

kurze Frage: wie kann ich (ähnlich wie im Outlook) beim Abrufen von eMails eine Kopie am server belassen?

- und wie check ich, ob ich eine Mail bereits downgeloadet habe oder nicht ???


ich verwende zum Abrufen der Mails (inkl. speichern als html oder textfile) folgendes:
Delphi-Quellcode:

procedure TUniServerModule.UniThreadTimer1Timer(Sender: TObject);
// UniMainModule
var MailCount,Mailgroesse,intIndex :Integer;
    itm:TListItem;
    i:integer;
    s:string;
begin

      POP.Host := 'pop.1und1.de';
      POP.Port := 995;
      POP.Username := 'xxxxxx';
      POP.Password := 'yyyyyyy';
      POP.Connect;


      Logger.AddLog(' .. erzeuge Verbindung zum POP Server....');

      MailCount := POP.CheckMessages;


      if MailCount = 0 then Logger.AddLog('Keine neuen Mails vorhanden...');

      if MailCount >0 then
      begin

          for intIndex := 1 to MailCount do
          begin
            msg.Clear;
            pop.Retrieve(intIndex, Msg);

            Logger.AddLog('MIMEBoundary:  '+inttostr(msg.MIMEBoundary.Count));
            if msg.IsMsgSinglePartMime then Logger.AddLog('IsMsgSinglePartMime');
            if msg.IsEncoded           then Logger.AddLog('IsEncoded');
            if msg.IsMsgSinglePartMime then Logger.AddLog('IsMsgSinglePartMime');
            if msg.NoEncode            then Logger.AddLog('NoEncode');

            Logger.AddLog('------------------------------------------');



                //Anhang
                for i := 0 to Msg.MessageParts.Count-1 do begin
                  if Msg.MessageParts.Items[i] is tIdAttachment then
                      begin
                        s := (Msg.MessageParts.Items[i] as tIdAttachment).Filename;
                        Logger.AddLog('Anhang:         '+s);
                       (Msg.MessageParts.Items[i] as tIdAttachment).savetofile(uniservermodule.FilesFolderPath +'Mails\Anhang_' + IntToStr(intIndex) +s);
                      end;
                end;


                // HTML Mail
                if msg.MessageParts.Count > 0 then
                begin
                Logger.AddLog('HTML-Mail:');
                for i := 0 to Msg.MessageParts.Count-1 do begin
                    if Msg.MessageParts.Items[i] is TIdText then
                     begin
                      //Logger.AddLogStrings(TIdText(Msg.MessageParts.Items[i]).Body);
                      TIdText(Msg.MessageParts.Items[i]).Body.SaveToFile(uniservermodule.FilesFolderPath +'Mails\html_' + IntToStr(intIndex) + '.html');
                     end;
                end;
                end;


                // Text Mail
                if msg.ContentType = 'text/plain' then
                begin
                Logger.AddLog('TXT-Mail:');
                  //Logger.AddLogStrings(msg.body);
                  Msg.Body.SaveToFile(uniservermodule.FilesFolderPath +'Mails\text_' + IntToStr(intIndex) + '.txt');
                end;


            pop.Delete(intIndex);  // Löscht die aktuelle Mail !!!!
            end;
      end;
      POP.Disconnect;




end;

Union 5. Mai 2017 13:07

AW: email abrufen: Kopie am Server belassen
 
Indem du diese Zeile auskommentierst / löschst:
Delphi-Quellcode:
pop.Delete(intIndex); // Löscht die aktuelle Mail !!!
Um die Mails eindeutig zu ideintifizieren, suche mal nach UIDL oder MsgId. So findest Du Lösungen.

hoika 5. Mai 2017 13:08

AW: email abrufen: Kopie am Server belassen
 
Hallo,

Zitat:

kurze Frage: wie kann ich (ähnlich wie im Outlook) beim Abrufen von eMails eine Kopie am server belassen?
indem du das Delete wegläßt ...

Zitat:

und wie check ich, ob ich eine Mail bereits downgeloadet habe oder nicht ???
MsgId prüfen, du musst dir die heruntergeladenen Mails anhand der MsgId's irgendwo merken.


zu spät ...

erich.wanker 5. Mai 2017 13:14

AW: email abrufen: Kopie am Server belassen
 
shit ... ich lösche sie ja selber !! .... wer seinen eigenen code lesen kann ist klar im Vorteil ;-)


Vielen Dank :-)

DeddyH 5. Mai 2017 14:17

AW: email abrufen: Kopie am Server belassen
 
Hätteste mal kommentiert :mrgreen:

erich.wanker 5. Mai 2017 14:19

AW: email abrufen: Kopie am Server belassen
 
:-D

Luckie 5. Mai 2017 20:19

AW: email abrufen: Kopie am Server belassen
 
Was will man bei
Delphi-Quellcode:
pop.Delete(...);
noch kommentieren? :mrgreen:

nahpets 5. Mai 2017 20:37

AW: email abrufen: Kopie am Server belassen
 
Delphi-Quellcode:
 // Löscht die aktuelle Mail !!!!
;-)

Rollo62 6. Mai 2017 06:31

AW: email abrufen: Kopie am Server belassen
 
Kommentiert wird meist erst NACH der Erkenntnis ...

Delphi-Quellcode:
  pop.Delete(...); // shit ... ich lösche sie ja selber !! .... wer seinen eigenen code lesen kann ist klar im Vorteil


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