Ir para conteúdo

POWERED BY:

Arquivado

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

btcv

mail

Recommended Posts

estou a fazer uma função para emviar mail em grandes quantidades, estou a utilizar o phpmailer:

 

$listnum = "SELECT * FROM `mails` ";
$resultnum=mysql_query($listnum);
$totalRegistos = mysql_num_rows($resultnum);


							for($i=0; $i<=$totalRegistos; $i++){ 
							$cont = 0;
							$listmsg = "SELECT * FROM `mails` limit ".$i.",1 ";
							$result=mysql_query($listmsg);
							while ($rows=mysql_fetch_row($result)) {

							$paraemail = $rows[1];

							$mail->AddAddress($paraemail);
							$mail->Send();	


							$mail->ClearAddresses();
							$cont = $cont + 1;
							echo ''.$paraemail.' - '; 

							if ($cont == 50)
								{
									flush();

									sleep (320);
									$cont = 0;
								}
							}




}

 

até aqui tudo bem ele envia para metade da bd depois mostra este erro The following From address failed:xxx@site.com

 

penso que ele nao esta a fazer o sleep (320); sera que alguem me pode dar uma dica.

 

obrigado a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

da uma melhora nesse codigo ai, pq você zera $cont quando é 50?

você ta querendo fazer spam ne.......

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente esse codigo, so verifique se o nome da chave é email

 

$sql = "SELECT * FROM mails";
$result = mysql_query($sql);

while ($rows=mysql_fetch_array($result)) {
	$mail->AddAddress($rows['email']);
	$mail->Send();  
	$mail->ClearAddresses();
        	echo ''.$rows['email'].' - '; 
}	

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente esse codigo, so verifique se o nome da chave é email

 

$sql = "SELECT * FROM mails";
$result = mysql_query($sql);

while ($rows=mysql_fetch_array($result)) {
	$mail->AddAddress($rows['email']);
	$mail->Send();  
	$mail->ClearAddresses();
        	echo ''.$rows['email'].' - '; 
}	

 

 

mas e o sleep nao entra?

Compartilhar este post


Link para o post
Compartilhar em outros sites

pra q o sleep?

 

zerando o $cont td vez q entrar no for......... ele nunca vai chegar a 50.......

 

for($i=0; $i<=$totalRegistos; $i++){ 
  cont = 0;
//...
  if ($cont == 50){
    flush();
   sleep (320);
   $cont = 0;
}
                                                               }



Compartilhar este post


Link para o post
Compartilhar em outros sites

pra q o sleep?

 

zerando o $cont td vez q entrar no for......... ele nunca vai chegar a 50.......

 

for($i=0; $i<=$totalRegistos; $i++){ 
  cont = 0;
//...
  if ($cont == 50){
    flush();
   sleep (320);
   $cont = 0;
}
                                                               }



 

pois falta de atenção, a var $cont devia de estar fora, mas mesmo assim nao meto o sleep para ele fazer uma pausa de 50 em casa 50 mails por causa do span?

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, e qual é a duvida agora?

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, e qual é a duvida agora?

 

ja testei e meti o sleep(30); o que da uma pausa de 30 segundos de 50 em 50... mas volta a dar-me o mesmo erro... tens alguma ideia do que é?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sera q n é um email formatado errado ou como caracteres especiais? da uma olhada nessa lista de emails

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja estive a ver e axo que esta tudo bem... ele envia 1006 emails bem e depois da erro The following From address failed: em todos os outros.. ate pensei que podia ser o numero de emails que o server pode enviar por isso pensei no sleep...

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta o resto da configuração do PHPMailer.

Compartilhar este post


Link para o post
Compartilhar em outros sites
error_reporting(E_STRICT);

date_default_timezone_set('America/Toronto');

error_reporting(E_STRICT);

date_default_timezone_set('America/Toronto');

include('class/class.phpmailer.php');




$mail = new PHPMailer();
$mail->SetLanguage("br");
$mail->IsHTML(true); // envio como HTML se 'true'
$mail->WordWrap = 50; // DefiniÃÆ'§ÃÆ'£o de quebra de linha
$mail->IsSMTP(); // send via SMTP
$mail->SMTPAuth = true; // 'true' para autenticaÃÆ'§ÃÆ'£o
$mail->Mailer = "smtp"; //Usando protocolo SMTP
$mail->Host = "mail.xxxxx.com"; //seu servidor SMTP
$mail->Username = "xxx@xxxxx.com"; //Username da BOL
$mail->Password = "xxxxxx"; // senha de SMTP
$mail->From = "xxx@xxxxx.com";
$mail->FromName = "xxx@xxxxx.com";

$msgs=$_POST["editor1"];


$newmsgs = str_replace('\"',"",$msgs);




$mail->Body = $newmsgs;



$mail->Subject = "xxxxxxxx.com | Newsletter";

$listnum = "SELECT * FROM `mails` ";
$resultnum=mysql_query($listnum);
$totalRegistos = mysql_num_rows($resultnum);
							$cont = 0;

							for($i=0; $i<=$totalRegistos; $i++){ 

							$listmsg = "SELECT * FROM `mails` limit ".$i.",1 ";
							$result=mysql_query($listmsg);
							while ($rows=mysql_fetch_row($result)) {

							$paraemail = $rows[1];

							$mail->AddAddress($paraemail);
							$mail->Send();	


							$mail->ClearAddresses();
							$cont = $cont + 1;
							echo ''.$paraemail.' - '; 

							if ($cont == 50)
								{
									flush();
								echo'-------';
									sleep(30);
									$cont = 0;
								}
							}




}

?>

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.