Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
você está dizendo que se a variável $cont==50 ela vai ser novamente 0
oO
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'].' - ';
}>
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?
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;
}
}>
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?
entendi, e qual é a duvida agora?
>
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 é?
sera q n é um email formatado errado ou como caracteres especiais? da uma olhada nessa lista de emails
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...
posta o resto da configuração do PHPMailer.
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;
}
}
}
?>
da uma melhora nesse codigo ai, pq você zera $cont quando é 50?
você ta querendo fazer spam ne.......