Показать сообщение отдельно
  #3  
Старый 22.10.2014, 20:39
yurayura yurayura вне форума
Прохожий
 
Регистрация: 28.05.2011
Сообщения: 32
Репутация: 10
По умолчанию

Добавил SSL, теперь конектится

флаги не видит, уже нагуглил, что на IMAP надо переходить
оказывается что в каждом письме может быть очень много частей

Поиск рулит, к сожалению на поисковиках а не по форуму.
полезный ресурс по этим компонентам
http://www.indyproject.org/docsite/h...e=TIdPOP3.html

В общем этот код работает.


Код:
 IdPOP31.AuthType:=patUserPass;
 IdPOP31.Host:='pop3.mail.ru';
 IdPOP31.Username:='mypop3testmail2014@mail.ru';
 IdPOP31.Password:='testpassword';
 IdPOP31.Port:=995;
 IdPOP31.ConnectTimeout:=10000;
 IdSSLIOHandlerSocketOpenSSL1.Host:=IdPOP31.Host;
 IdSSLIOHandlerSocketOpenSSL1.Port:=IdPOP31.Port;
 IdSSLIOHandlerSocketOpenSSL1.Destination:=Format('%s:%d',[IdPOP31.Host,IdPOP31.Port]);
 IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:=sslvTLSv1;
 IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode:=sslmUnassigned;
 IdPOP31.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
 IdPOP31.UseTLS:=utUseImplicitTLS;
 try
   IdPOP31.Connect;
   if IdPOP31.Connected then
   begin
     Memo1.Lines.Add('connected');
     MessageCount:=IdPOP31.CheckMessages;
     Memo1.Lines.Add('Message Count='+IntToStr(MessageCOunt));
     for i:=1 to MessageCount do
     begin
       IdPOP31.RetrieveHeader(i,IdMessage1);
       Memo1.Lines.Add(IdMessage1.Subject);
       if (mfSeen in IdMessage1.Flags ) then
         Memo1.Lines.Add('Seen');

       if (not (mfSeen in IdMessage1.Flags)) then
         begin
           Memo1.Lines.Add('New');
           IdPOP31.Retrieve(i,IdMessage2);
           Memo1.Lines.AddStrings(IdMessage2.Body);
           PartsCount:=IdMessage2.MessageParts.Count;//
           Memo1.Lines.Add('Parts Count='+IntToStr(PartsCount));
           for j:=0 to PartsCount-1 do
           begin
             if (IdMessage2.MessageParts.Items[j].PartType=mptAttachment) then
             begin
               Attachment:=IdMessage2.MessageParts.Items[j] as TIdAttachmentFile;
               Memo1.Lines.Add(Attachment.FileName);
               Attachment.SaveToFile(Attachment.FileName);
             end;
           end;

           
         end;
     end;
   end;
 Except
   on E:Exception do
     ShowMessage(E.Message);
 end;
 if IdPOP31.Connected then
   IdPOP31.Disconnect;
Ответить с цитированием