GARANTIR DESCONTO

Fórum Envio de anexo em email com erro #350541

13/12/2007

0

Tenho o seguinte procedimento para envio de email
For I := 1 to Cont - 1 do
Begin
...Try
......IdSMTP1.AuthenticationType := atLogin;
......IdSMTP1.Host := Smtp;
......IdSMTP1.Username := Email1;
......IdSMTP1.Password := Senha;
......If not IdSMTP1.Connected then
.........IdSMTP1.Connect;
......IdMessage1.From.Text := Email1;
......IdMessage1.Recipients.EMailAddresses := Email2[I];
......IdMessage1.Subject := ´Laudo de ´ + Animal[I];
......IdMessage1.Body.Text := ´Resultado de Laudo´;
......TIdAttachment.Create(IdMessage1.MessageParts, TFileName(´PDF\´+IntToStr(NumeroLaudo[I])+´.pdf´));
......IdMessage1.Date := StrToDateTime(FormatDateTime(´DD/MM/YYYY HH:MM:SS´,Now));
......IdSMTP1.Send(IdMessage1);
......RichEdit1.Lines.Add(IntToStr(I) + ´ emails enviados´);
......RichEdit1.Refresh;
......With IBTable1 do
......Begin
.........Try
............Edit;
............FieldByName(´ENVIADO´).AsBoolean := True;
............FieldByName(´DATAENVIO´).Value := Date();
............Post;
............IBTransaction1.Commit;
.........Except
............ShowMessage(´HOUVE UM ERRO COM O BANCO DE DADOS´);
............IBTransaction1.RollBack;
.........End;
.........IBTransaction1.StartTransaction;
.........IBTable1.Open;
......End;
...Finally
......IdSMTP1.Disconnect;
...End;
End;

Teóricamente isto pegaria os valores contidos nas matrizes:
email2->endereço do destinatário
Animal -> nome do animal
NumeroLaudo - > numero do arquivo gerado mais extensão pdf.
Deveria pegar estes valores, acrescentar os arquivos e enviaria 1 email para cada destinatário, com 1 arquivo anexo, mas em vez disto (estou gerando 4 arquivos para teste), ele manda 1 email com 4 arquivos, 1 email com 1 arquivo, 1 email com 3 arquivos e 1 email com 2 arquivos
Será que alguém sabe onde está o erro?


Edilcimar

Edilcimar

Responder

Posts

13/12/2007

Massuda

Precisa ´limpar´ o TIdMessage antes de cada envio...
...
If not IdSMTP1.Connected then 
  IdSMTP1.Connect; 

// inclua isto:
IdMessage1.Clear;

IdMessage1.From.Text := Email1;
...
...caso contrário o conteúdo de cada email vai se somando à medida que você envia os emails.


Responder

Gostei + 0

13/12/2007

Edilcimar

Valeu Massuda, vou testar, qualquer coisa volto a postar


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar