Yo lo hago de la siguiente manera:
Código Delphi
[-]
Function TFrmMainform.ProcesaCorreo(PiNumCorreo: Integer): String;
Var
LiNumMsgParts: Integer; LStlCuerpoCorreo: TStringList; LStlcorreo: TStringList; LIdmMensaje: TIdMessage; Begin
Result := 'Nada';
Try
Try
LStlCuerpoCorreo := TStringList.Create;
LStlcorreo := TStringList.Create;
LIdmMensaje := TIdMessage.Create(self);
LIdmMensaje.ContentType := 'text/plain';
PopCorreo.Retrieve(PiNumCorreo,LIdmMensaje);
If LIdmMensaje.MessageParts.Count = 0 Then
LStlCuerpoCorreo.AddStrings(LIdmMensaje.Body)
Else
For LiNumMsgParts := 0 To Pred(LIdmMensaje.MessageParts.Count) - 1 Do
If LIdmMensaje.MessageParts.Items[LiNumMsgParts] Is TIdText Then
LStlCuerpoCorreo.AddStrings(TIdText(LIdmMensaje.MessageParts.Items[LiNumMsgParts]).Body);
PopCorreo.Delete(PiNumCorreo);
If Result = 'Nada' then
Begin
..............
End;
Finally
LStlCuerpoCorreo.Free;
LStlcorreo.Free;
LIdmMensaje.Free;
End;
Except
On Error: Exception Do
Result := 'Ha ocurrido un error al guardar el mensaje. Error: ' + Error.message;
End;
End;
Sobre guardarlo en access, pues es super sencillo en tu tabla incluyes un campo de tipo memo y listo, grabas el correo.
Saludos