No puedo probarlo ahora, pero a primeras te recomendaría lo siguiente.
No accedas desde dentro del Thread directamente a objetos del formulario y tampoco al formulario.
Código Delphi
[-]
Inbox := FrmP.LstInbox.Items[Random(FrmP.LstInbox.Count)];
Email := FrmP.LstEmail.Items[Index].ToLower;
Esos accesos a FrmP (que imagino es el formulario) eliminalos.
Crea 2 propiedades en el thread para pasar esas lista de valores y al crearlo se los pasas.
Código Delphi
[-]
...
property Inbox:TStrings read FInbox write FInbox;
property Emails:TStrings read FEmails write FEmails;
...
constructor Create(Suspended: Boolean; AIndex: Integer; pInbox, pEmails:TStrings); overload;
begin
...
FInbox := TStringsList.Create();
FInbox.Assig(pInbox);
FEmails := TStringsList.Create();
FEmails.Assign(pEmails);
...
end;
Dentro del thread ya puedes usar estas listas, en lugar de acceder al FrmP.