Jump to content


Photo

Controle De Envio De Emails


  • Faça o login para participar
9 replies to this topic

#1 Tatiana Carrazzoni

Tatiana Carrazzoni

    Turista

  • Usuários
  • 26 posts
  • Sexo:Feminino
  • Localidade:Recife

Posted 30/01/2008, 10:36

Gente...

Montei um sistema de envio de newsletter e gostaria de enviar uma certa quantidade de emails por segundo...

Como faço isso?? esse é meu primeiro sistema e eu n sei onde colocar isso e como colocar...

Edição feita por: Tatiana Carrazzoni, 30/01/2008, 10:37.


#2 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 30/01/2008, 10:53

Um exemplo, fazendo iteração usando while, seria assim:

<?php

$cont = 0;

while( ... )
{
	$cont++;
	
	mail(...);
	
	if( $cont == 100 )
	{
		sleep(30);
		$cont = 0;
	}
}

?>

Quando o contador atingir 100, irá fazer uma pausa de 30 segundos para enviar outros 100 e-mails. Imagino que esta solução seja para evitar o limite máximo de e-mails por segundo do seu servidor, certo? :DAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#3 Tatiana Carrazzoni

Tatiana Carrazzoni

    Turista

  • Usuários
  • 26 posts
  • Sexo:Feminino
  • Localidade:Recife

Posted 30/01/2008, 10:54

é exatamente isso, mas onde coloco esse scritpt???

seria nessa parte::

<? while($fet_email = mysql_fetch_array($res_email)){
	if(@mail($fet_email['nome_cli'] . '<' . $fet_email['email'] . '>', $fet_news['nome'], $fet_news['descricao'], $cabecalho)){
	
$sql_salva =  mysql_query("INSERT INTO enviadas (id_env, remetente, nome_env, descricao, grupo, email, data) VALUES ('', '$fet_rem[email_rem]', '$fet_news[nome]', '$fet_news[descricao]', '$fet_email[grupo]', '$fet_email[email]', NOW())", $db) or die(erro(mysql_error()));

echo "email enviado com sucesso para ".$fet_email['email']." (".$fet_email['nome_cli'].")<br>";
}
else{
echo "falha ao enviar o email ".$fet_email['email']." (".$fet_email['nome_cli'].")<br>";
}
};
?>

Edição feita por: Tatiana Carrazzoni, 30/01/2008, 10:55.


#4 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 30/01/2008, 10:58

Foi como eu expliquei, apenas faça a interpretação e coloque no seu código.

Fora do while você inicia o contador com zero, no while você faz ele ir incrementando com $cont++, e no final desta iteração, faça a condição if, caso contador chegue a um determinado limite, zere o contador e use o sleep().Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#5 Tatiana Carrazzoni

Tatiana Carrazzoni

    Turista

  • Usuários
  • 26 posts
  • Sexo:Feminino
  • Localidade:Recife

Posted 30/01/2008, 11:00

ficaria assim???

$cont = 0; 
				 
				 while($fet_email = mysql_fetch_array($res_email)){
				 $cont++;
	if(@mail($fet_email['nome_cli'] . '<' . $fet_email['email'] . '>', $fet_news['nome'], $fet_news['descricao'], $cabecalho)){
	
$sql_salva =  mysql_query("INSERT INTO enviadas (id_env, remetente, nome_env, descricao, grupo, email, data) VALUES ('', '$fet_rem[email_rem]', '$fet_news[nome]', '$fet_news[descricao]', '$fet_email[grupo]', '$fet_email[email]', NOW())", $db) or die(erro(mysql_error()));

 if( $cont == 100 )
	{
		sleep(30);
		$cont = 0;
	}

echo "email enviado com sucesso para ".$fet_email['email']." (".$fet_email['nome_cli'].")<br>";
}
else{
echo "falha ao enviar o email ".$fet_email['email']." (".$fet_email['nome_cli'].")<br>";
}
}


#6 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 30/01/2008, 11:04

Sim. Se tiver dúvidas é só testar. ^^ Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#7 Tatiana Carrazzoni

Tatiana Carrazzoni

    Turista

  • Usuários
  • 26 posts
  • Sexo:Feminino
  • Localidade:Recife

Posted 30/01/2008, 11:09

ok... ta funcionando...
valeu...

uma pergunta, pq vc n coloca RESOLVIDO nos topicos resolvido??

#8 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 30/01/2008, 11:25

Porque quem tem a opção de colocar o "RESOLVIDO" tem que ser da Equipe de PHP ou o usuário que criou o tópico. Se daqui uns 2 meses outro usuário fizer uma pergunta neste mesmo tópico referente ao assunto provavelmente ninguém vai responder porque está com o RESOLVIDO.

Não existe uma regra para isso, então se quiser colocar coloque. Vai do pensamento de cada usuário/membro da equipe.
WebFórum - Equipe de Desenvolvimento - Monitor
Posted Image
Yeah I do have some stories, and it's true I want all the glory ...

#9 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 30/01/2008, 11:26

uma pergunta, pq vc n coloca RESOLVIDO nos topicos resolvido??

Ainda que alguns tenham esta prática, já foi discutido entre nós da equipe que isto não é viável, já que o tópico pode servir de futuras referências, caso outro usuário tenha outra dúvida e postar neste tópico com prefixo [Resolvido], ninguém irá entrar nele já que teoricamente ele foi resolvido.

E outra, a suposta solução pode não ser a mais correta e alguma boa alma pode ir lá e dar uma solução melhor, complementar e etc.

PS. prefiro que não coloque. ;)

(ok2)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#10 Tatiana Carrazzoni

Tatiana Carrazzoni

    Turista

  • Usuários
  • 26 posts
  • Sexo:Feminino
  • Localidade:Recife

Posted 30/01/2008, 11:30

bem pensado...
realmente eu n tinha pensado assim...

mas mt obrigado pela ajuda e pela resposta...




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq