Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carlos_Eduardo_de_Paula

Envio de Email

Recommended Posts

Ola,

 

Estou com um pequeno problema chato...

 

tenho um pequeno script para envio de email onde ele busca os emails em uma base de com aproximadamente 7 mil emails porem quando chega em 3 mil o sistema para de enviar. abaixo segue o codigo que uso para o envio

 

já fiz varios testes porem não localizei nenhuma solução... alguém poderia me ajudar me dando uma luz.... uma ideia para resolver esse problema

 

ABS

 

 

$wsql = mysql_query("SELECT * FROM phpsp_users where primary_key ='$key'");
$dados=mysql_fetch_array($wsql);

$acao = $_POST[acao];
$nivel = $_POST[nivel];
$nome = $_POST[nome];
$email = $_POST[email];
$arquivo = $_POST[arquivo];
$assunto = $_POST[assunto];


if($acao == "send"){

if($nivel != 0){
$linha = "where userlevel=$nivel and id_cliente=$key";
//$linha = "where userlevel='5' and id_cliente='25'";
}

   $headers  = 'MIME-Version: 1.0' . "\r\n";
//$headers. = "Content-type: text/html; charset=iso-8859-1\r\n";
$headers.= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers.= "From:$nome<$email>";

$sql = mysql_query("SELECT distinct * FROM news $linha");
$d=mysql_fetch_array($sql);
//	$sql = mysql_query("SELECT * FROM usuarios");
echo "<hr> $nivel <hr>";
echo "<table width='100%' border='1' align='center' cellpadding='0' cellspacing='2'>
";

$i = 1;
	while ($coluna = mysql_fetch_array($sql)) {


					$teste="<hr>
					*<b>POLÍTICA ANTI-SPAM</b><br>
Conforme legislação sobre correio eletrônico, seção 301, Parágrafo (a)(2) ©. Decreto S. 1618, Título Terceiro aprovado pelo 105 Congresso Basedas Normativas Internacionais sobre o SPAM. Este email não poderá ser considerado SPAM, pois inclui uma forma de ser removido. Caso não queira receber novas mensagens de nossa empresa, <a href='http-~~-//www.site.com/remover.php?key=$coluna[id_user]'><b>Clique AQUI</b></a>. 
					<br>
					*Cadastro preenchido pela próprio(a) noivo(a) nos portais.<br>*Você está recebendo nosso informativo porque seus dados constam em nosso banco de dados, caso não deseje mais receber esse email, <a href='http-~~-//www.site.com/remover.php?key=$coluna[id_user]'><b>Clique AQUI</b></a>";

for ($s=00;$s<8;$s++)
		{
		$segundos=$s;
		sleep(1);
		}

	if($segundos=8)
	{	

					if (@mail($coluna[email],$assunto,stripslashes($arquivo.$teste),$headers)) 
					{
					$id_user=$coluna[id_user];
		echo "<tr><td width='10' align='left'> $i</td><td> - <font color=blue>$coluna[nome] </td><td> $coluna[email] - enviado</font></td></tr>";
					} 
					else 
					{
					echo "$i - <font color=red>$coluna[email] - falhou</font><br>";
					}		


	}


flush();
ob_flush();
usleep(1);
$i++;

}
echo "</table>";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carlos.

 

Será que o servidor em que este site está alocado permite o envio destas mensagens no tempo X em que elas estão sendo enviadas?

Tente aumentar o tempo de cada envio com as funções que tens utilizado (como sleep) e ver se dessa vez enviam.

 

Outra coisa, se você não inserir seu código em uma tarefa Cron, ao fechar o navegador, a requisição é entendida como Cancelada/Interrompida.

Sugiro que faças 3 coisas, portanto:

 

1 - Vá à sua empresa de host e verifique quantos emails/hora é possivel enviar, e se seu código está no padrão da empresa.

2 - Se não estiver no padrão, coloque-o.

3 - Deixe seu código trabalhar por você; coloque-o em uma CronJob, se o servidor dispõe deste serviço.

 

Aparentemente o código está correto. Se você diz que enviou para 3 mil emails diferentes e depois trava, com certeza é bloqueio do servidor.

Caso não seja nenhum dos itens que te comentei, procure por funções que aumentam o timeout da página, pois a requisição pode expirar depois de um tempo, levando à perda dos dados. Por exemplo: http://us3.php.net/manual/en/function.set-time-limit.php

 

Espero que solucione o problema e que tenha te ajudado.

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.