Показать сообщение отдельно
  #2  
Старый 16.02.2012, 01:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если не изменяет память, то у Mail.ru есть нормальные сервисы POP3 и SMTP. Соответсвенно, TidPOP3, подключаемся, получаем список заголовков писем, далее делаем то, что хочется.
Вот код из одного из моих проектов (не весь, только получение списка):
Код:
      APOP3 := TIdPOP3.Create;
      AMessage := TIdMessage.Create;
      Try
        APOP3.Host := AMailBox.Server;
        APOP3.Port := 110;
        APOP3.Username := AMailBox.UserName;
        APOP3.Password := AMailBox.Password;
        APOP3.Connect;
        If APOP3.Connected Then
          Begin
            AMsgCount := APOP3.CheckMessages;
            FCallBackParam.Total := AMsgCount;
            For I := 1 To AMsgCount Do
              Begin
                If (Not FIsRun) Or (Terminated) Then Break;
                APOP3.RetrieveHeader(I,AMessage);
                AMsgSize := APOP3.RetrieveMsgSize(I);
                If Assigned(FCallBack) Then
                  Begin
                    AMsgInfo.MsgID := I;
                    AMsgInfo.MsgUID := AMessage.MsgId;
                    AMsgInfo.MsgPriority := 0; // !!!
                    AMsgInfo.MsgHasFlag := False;
                    AMsgInfo.MsgHasAttachment := False;
                    AMsgInfo.MsgSubject := DecodeEmailString(AMessage.Subject);
                    AMsgInfo.MsgFrom := DecodeEmailString(AMessage.FromList.EMailAddresses);
                    AMsgInfo.MsgTo := DecodeEmailString(AMessage.Recipients.EMailAddresses);
                    AMsgInfo.MsgCopy := DecodeEmailString(AMessage.CCList.EMailAddresses);
                    AMsgInfo.MsgDate := AMessage.Date;
                    AMsgInfo.MsgSize := AMsgSize;
                    FCallBackParam.Data := @AMsgInfo;
                    FCallBackParam.Command := cmdRetriveHdr;
                    FCallBackParam.Current := I;
                    Synchronize(CallCallBack);
                  End;
              End;
          End;
      Except
        // Catch all exceptions
        On E : Exception Do
          Begin
            AErrInfo.ErrMessage := E.Message;
            AErrInfo.Command := cmdBeginCheck;
            FCallBackParam.Data := @AErrInfo;
            FCallBackParam.Command := cmdError;
            Synchronize(CallCallBack);
          End;
      End;
      If APOP3.Connected Then APOP3.Disconnect;
      APOP3.Free;
      AMessage.Free;
Ответить с цитированием