Если не изменяет память, то у 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;