Ajuda - Busca - Membros - Calendário
Versão Completa: Ajuda Com Dbgrid.
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
hencker
Eu tenho um DBGrid, que depois de uma determinada condição fica carregado com os e-mails dos meus clientes.
Agora eu gostaria de saber como eu faço para ter uma rotina "linha a linha". Vamos supor que eu fosse mandar um e-mail para todos eles, porém desejo mandar um por vez (para que um não possa saber o e-mail do outro).
Vivendo&Aprendendo
Olá Hencker....

Não sei se vai ajudar ou se você já tentou fazer o que vou oferecer aqui, mas e se você fizer uma rotina para percorrer toda a tabelas dos e-mails e dentro dessa rotina os comandos de envio.... tipo:

CODE

procedure TForm1.Button1Click(Sender: TObject);
Var i : integer;
begin
  for i := 1 to ADOQuery1.RecordCount do
  begin
    ADOQuery1.Edit;
    ADOQuery1Nome.Value := ADOQuery1Nome.Value + ' a';
    ADOQuery1.Post;
    ADOQuery1.Next;
  end;
end;


No exemplo acima o comando percorre toda a tabela e vai adicionando o caractere em cada registro. Acredito que no seu caso seja igual é só no lugar dos comandos de adicionar os caracteres você colocar a rotina para enviar o e-mail.

OBS: não testei enviando e-mail. Isso é só uma dica.

Alexandre
Progr'amador
Olá hencker,
to meio enferrujado biggrin.gif
mas seria tipo assim:

utilisando os componentes Indy

CODE
procedure TForm1.Button1Click(Sender: TObject);
var
  Memo1: TMemo;
begin
  Memo1.Text := 'Corpo da mensagem...';
  Query1.First;
  While not Query1.EOF do begin
    if Query1.FieldByName('email_cliente').AsString <> '' then begin
      with IdMessage1 do begin
        Body.Assign(Memo1.Lines);
        From.Text := 'seuemail@seuprovedor.com.br';
        Recipients.EMailAddresses := Query1.FieldByName('email_cliente').AsString;
        Subject := 'Assunto';
      end;

      IdSMTP1.Host:='smtp.seuprovedor.com.br';
      IdSMTP1.Port:= 25;

      IdSMTP1.Username := 'seunome';
      IdSMTP1.Password := 'suasenha';

      IdSMTP1.Connect;
      try
        IdSMTP1.Send(IdMessage1);
      finally
        IdSMTP1.Disconnect;
      end;
    end;
    Query1.Next;
  end;
end;


Abs. Progr'amador. wink.gif
hencker
Eu fiz assim ó:

CODE
var
  com, push :Integer;
  i : Integer;
begin
  DMCon.ZCom.Active   := False;
  DMCon.ZPush.Active  := False;

  DMCon.ZCom.Active   := True;
  DMCon.ZPush.Active  := True;

  push := DMCon.ZPushtopic_id.Value;
  com  := DMCon.ZComUltima.Value;

  if push > com then
    begin
      mMensagem.Lines.Add('Você está recebendo essa mensagem pois há um novo tópico de título "'+ DMCon.ZPushtopic_title.Value+'".');
      mMensagem.Lines.Add('Para visualizar e responder essa mensagem basta clicar no link abaixo:');
      mMensagem.Lines.Add('');
      mMensagem.Lines.Add('http://www.debates.not.br/push/viewtopic.php?t='+ IntToStr(DMCon.ZPushtopic_first_post_id.Value) );
      mMensagem.Lines.Add('');
      mMensagem.Lines.Add('');
      mMensagem.Lines.Add('');
      mMensagem.Lines.Add('');
      mMensagem.Lines.Add('');
      mMensagem.Lines.Add('---------------------------------------------------');

      for i := 1 to DMCon.ZIndividual.RecordCount do
        begin
         idMensagem.Recipients.EMailAddresses := DMCon.ZIndividualuser_email.Value;
         idMensagem.Subject := '[debates.not.br] '+ DMCon.ZPushtopic_title.Value;
         idMensagem.Body := mMensagem.Lines;

          try
            IdSMTP.Connect;
            IdSMTP.Send(idMensagem);
          finally
           IdSMTP.Disconnect;
          end;
          DMCon.ZIndividual.Next;
        end;

      with DMCon do
        begin
          ZCom.Close;
          ZTUpdt.Edit;
          ZTUpdtUltima.Value := ZTUpdtUltima.Value + 1;
          ZTUpdt.CommitUpdates;
          Zcom.Open;
        end;
      mMensagem.Lines.Clear;
  end;



Esse código está atrelado ao evento onTimer, pois preciso que ele seja executado a cada 1 minuto! Usei o Indy para enviar!
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.