Contador de LOOP

19/03/2013

1

Olá, estou desenvolvendo um enviador de email porem tenho uma duvida
Try
   SMTP.Connect;
   if SMTP.Connected then
   begin
     SMTP.Send(Msg);
     inc(contador,1);
      SMTP.Disconnect;
     end;


Neste codigo queria que cada vez que fosse enviado o email o contador adiciona mais 1 email enviado a um label.
so que ele so adiciona um independente de quantos emails tenha a lista.
Responder

Posts

Olá.

Esta parte de código não ajuda muito para a ajuda ou solução do seu problema.

Diretamente não esta "funcional" para o seu requisito.

Post o metodo completo, assim poderemos lhe ajudar.


At.
Responder

19/03/2013

Marcelo Alves

procedure TForm1.btnEnviarClick(Sender: TObject);
Var
  i: integer;


begin
 if checkbox1.Checked = true then
  SMTP.IOHandler := IO_OpenSSL;
  SMTP.UseTLS :=  utUseImplicitTLS;

  with SMTP do begin
    Host      := txt_host.Text;
    Username  := txt_user.Text;
    Password  := txt_pass.Text;
    Port      := strtoint(Edit4.Text);
   AuthType  := satDefault;
    ConnectTimeout := 10000;
    ReadTimeout   := 10000;
  end;

  with IO_OpenSSL do begin
    SSLOptions.Method := sslvSSLv23;
    SSLOptions.Mode   := sslmClient;
  end;

  with Msg do begin
    From.Name := txt_nome.Text;
    From.Address := edt_name.Text;
  end;



  //Envio da mensagem

  // Assunto da Msg
  Msg.Subject := edtAssunto.Text;

  // Destinatários
  Msg.Recipients.Clear;
  for i := 0 to strtoint(edt_qtd.Text) do
  begin
    Msg.Recipients.Add;
    Msg.Recipients.Items[Msg.Recipients.Count - 1].Address := lstDestinatarios.Items[i];
  end;

  // Counteúdo
  Msg.ContentType := 'text/plain';
  Msg.Body.Text := mCorpo.Text;


 // Conectando e enviando
 Try
   SMTP.Connect;
   if SMTP.Connected then
   begin
     SMTP.Send(Msg);
     inc(contador,1);
      SMTP.Disconnect;
     end;
     begin
     lbl_enviados.Caption := inttostr(contador);
     if lbl_enviados.Caption = edit4.text then
     begin
     deletelogin;
     end;

   end;
 Except
   on e: Exception do
   begin
     ShowMessage('ERRO: ' + e.Message);
     SMTP.Disconnect;
   end;
 End;
end;
Responder
Olá Marcelo.

Qual o escopo da variável "Contador"? Onde você está iniciando a variável?

Responder

20/03/2013

Marcelo Alves

MTP.Connect;
if SMTP.Connected then
begin
SMTP.Send(Msg);
inc(contador,1);<--- Aqui o contador. ele exibe a quantidade em um label.
Responder
MTP.Connect;
if SMTP.Connected then
begin
SMTP.Send(Msg);
inc(contador,1);<--- Aqui o contador. ele exibe a quantidade em um label.


Marcelo.

Reveja onde você declarou a variável contador. Ela deve estar como publica, inicie ela em zero ai sim ela ira implementar a contagem correta.

At.
Responder

22/03/2013

Marcelo Alves

Era Justamente isso, obrigado consegui resolver.
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira