LOOP para envio de emails com varios smtps.

Delphi

14/03/2013

Olá, gostaria de uma ajuda, estou desenvolvendo um enviador de email que utiliza 2 contas de smtp 1 do gmail e outra uol,
gostaria de saber como faço pra quando ele enviar 50 emails com uma conta pular para outra e continuar a enviar a lista de emails.
Marcelo Alves

Marcelo Alves

Curtidas 0

Respostas

William

William

14/03/2013

Aparentemente o uso de um loop FOR resolve.
Exemplo:
for i:=0 to 50 do
begin
  //Envia emails conta gmail
end;

for i:=0 to 50 do
begin
  //Envia emails conta uol
end;


Mas podem existir outras condições q vc não mencionou, detalhe um pouco mais ...
GOSTEI 0
Marcelo Alves

Marcelo Alves

14/03/2013

Sim, gostaria desta forma
for i:0 to 50 do
begin
enviaos 50 pra gmail, puxando de um listbox.
end;

mas ai resta a duvida desta forma ele envia 50 email pra gmail
considerando gmail primeiro login e senha do listbox
email@gmail.com
email@uol.com.br

como ficaria pra quando terminar os 50 do gmail ele ja passar pro uol em 1 unicoo loop
GOSTEI 0
Marcelo Alves

Marcelo Alves

14/03/2013

respondendo melhor:
seria assim

2 logins no listbox
a cada 50 emails enviados ele utiliza o proximo login para continuar enviando a lista
GOSTEI 0
Francisco Macário

Francisco Macário

14/03/2013

Você tem um componente para uso do email.

Crie um contador que ao atingir um numero X faça a troca das configurações da conta SMTP, e assim por diante até zerar sua fila (ou listbox).

GOSTEI 0
Marcelo Alves

Marcelo Alves

14/03/2013

voce fala utilizando for?
é isso que estou com duvidas
procedure envia;
var
i: integer;
begin
for i := 0 to strtoint(label1.caption) do
begin
  //como seria comando aqui de mudar pro proximo login,
  //considerando login em um listbox
end;

end;
GOSTEI 0
Francisco Macário

Francisco Macário

14/03/2013

voce fala utilizando for?
é isso que estou com duvidas
procedure envia;
var
i: integer;
begin
for i := 0 to strtoint(label1.caption) do
begin
  //como seria comando aqui de mudar pro proximo login,
  //considerando login em um listbox
end;

end;


Então vamos lá.


procedure envia;
var
i: integer;
iCont:integer;
begin
iCont :=0;
for i := 0 to strtoint(label1.caption) do
begin
  inc(iCont);
  //como seria comando aqui de mudar pro proximo login,
  //considerando login em um listbox
  if iCont = 50 then
  begin
    //aqui vc chama um metodo para trocar as configurações do componente de email para a X conta.
    iCont :=0;
  end;
end;

end;

GOSTEI 0
Marcelo Alves

Marcelo Alves

14/03/2013

Olá aquela parte ja consegui, mas agora da um erro neste codigo.


procedure TForm1.Button1Click(Sender: TObject);
var
config : TStringList;
i: integer;
begin
  if FileExists('Config.txt') then
    begin
    config := TStringList.Create;
      config.LoadFromFile('Config.txt');
      for i := 0 to config.Count -1 do
      begin
      config.Delimiter := ';';
      config.QuoteChar := ' ';
      config.StrictDelimiter := True;
      config.DelimitedText := config[0];
      edit1.Text := config[0];
      edit2.Text := config[1];
      end;
      end;
end;


list index out of bounds (1)

alguem sabe o que pode ser?
ja separei do restante do projeto é nele que da o erro.
GOSTEI 0
Marcelo Alves

Marcelo Alves

14/03/2013

Obrigado a todos, ja consegui resolver e está funcional, para o ultimo erro foi so adicionar um break; apos o loop.
GOSTEI 0
POSTAR