Olá pessoal.
Uso Delphi 2009 e Indy Tiburon.
Criei uma classe derivada dos componentes Indy para criar email. Criei
também um método Enviar que se conecta com o servidor smtp e envia o email.
Consigo criar um email e enviar sem problemas, mas há um módulo do meu
sistema que cria uma pilha de emails e numa thread eu envio um a um. Na hora
que eu chamo o TEmail.Enivar a coisa complica. Debugando eu vejo que durante
a preparação do email, a execução volta ao início tentando enviar outro,
gerando hora erro de conexão multipla no servidor SMTP, outras de AV e até
Invalid Pointer.
Fiz mais ou menos assim:

Pilha := TObjectStack.Create;

loop
  Email := TEmail.Create;
  .
  ...insere os dados...
  .
  Pilha.Push(Email);

Na Thread Fica assim:
while Pilha.Count > 0 do
begin
  Email := TEmail(Pilha.Pop);
  Email.Enviar;
  Email.Free;
end;
Pilha.Free;

Só tenho problemas com pilha. Se for apenas 1 objeto tudo funciona bem.
Alguém pode me dar uma luz?
Desde já agradeço!
Abraços.


[As partes desta mensagem que não continham texto foram removidas]

Responder a