Ir para conteúdo
  • Cadastre-se

dev botao

Envio em lote


thiago.alvares
  • Este tópico foi criado há 4192 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Pessoal, poderiam me dar mais uma ajuda. o Sr. Igor foi muito gentil em me ajudar, mas nao estou achando como desenvolver a minha necessidade. tenho em meu banco de dados 1471 telefones cadastrados entre cliente, fornecedores e funcionarios. o sistema começa o envio para nossa lista, mas para de uma hora para outra. o ATTimeOut esta como 30000 e o intervalo entre menssagens esta 10, sei que é muita para para apenas um unico modem, mas nao teria quebrar a quantidade do lote em 50 por vez?

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Enviar tanto email em lote é complicado porque a grande maioria das operadoras tratam isso como spam e bloqueiam.

quanto a enviar em lotes de 50, você pode fazer isso pelo seu próprio código mesmo, monte o lote, envie, aguarde, e assim por diante.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

POis é, este é meu problema, nao consegui realizar estes procedimentos...

ja tentei com IF, For mas nao esta dando muito certo... saberia uma forma de realizar este processo?

thiago , vou tentar te ajudar de um modo simples , vc vai utilizar uma variavel integer pra contar oque vc querer que processe quando ela chegar em seu valor n .

Vamos simular o envio de 20 em 20 emails !

var i : integer ;

begin

i := 0 ;

// 1-Pesquisa o seu banco para listar os emails ha enviar

while not Query.eof do // laço da lista de emails

begin

//...Incluo 1 email ao lote aqui...

inc(i) ; // Atribuo + 1 ao minha variavel contadora

if i = 20 then // Quando chegar a 20 emails executo o processo de envio

begin

//... executo aqui o processo de envio e aguardo

//... Informo a Aplicação para descartar os 20 emails deste processo ja enviado

i := 0 ; // Zero a minha variavel contadora pra iniciar novamente a contagem

end ;

Query.next ; // Continuo o próximo

end ;

if i > 0 then

begin

//... executo aqui o processo de envio do restante dos emails que sobraram < 20

end ;

end ;

Com certeza vc precize nesta empreitada de Try Except pra tratar erros , enfim ... tem que testar !

Este foi um exemplo simples mas se quizer algo mais avançado vc pode tambem utilizar uma thread para esse caso , pra que não nescessite ficar aguardando o envio de todos estes emails até o fim ! , pesquise por thread .

Link para o comentário
Compartilhar em outros sites

Basicamente, criei desta forma

while not dtsmsprincipal.CLSMSCLIE.Eof do

begin

contaEnvio := contaEnvio+1;

with envioLote.add do

begin

Telefone := dtSMSPrincipal.CLSMSCLIENUM_CEL_CLIE.AsString;

Mensagem := Memo1.Text;

end;

dtsmsprincipal.CLSMSCLIE.Next;

if (contaEnvio = 50) or (dtSMSPrincipal.CLSMSCLIE.Eof) then

begin

frmPrincipal.ACBrSMS1.EnviarSMSLote(envioLote,indice);

contaEnvio := 0;

sleep(35);

enviolote.clear;

end;

mas ainda esta dando erro no envio total

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4192 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.