Добавил 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;