AAninh@ 0 Denunciar post Postado Julho 22, 2009 Meu provedor só autoriza o envio de apenas 350 e-mails por hora, que código tenho de usar? Estou usando o sequinte script: <? mysql_select_db($database_polis_bdcon, $polis_bdcon); $select = "SELECT * FROM mail"; $query = mysql_query($select); $total = mysql_num_rows($query); for($i=0;$i<$total;$i++){ $dados = mysql_fetch_array($query); global $nome; $nome = $dados["nome"]; $email = $dados["email"]; $titulo = $_POST["titulo"]; $mensagem1 = wordwrap(nl2br($_POST["mensagem"]),68,"\n",true); $mensagem = " <style type=\"text/css\"><!-- .style1 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; } --> </style> <table width=\"800\" cellpadding=\"0\" cellspacing=\"0\"> <tr> <td><img src=\"http://www.eu.com.br/img/new_top.jpg\" width=\"800\" height=\"252\" /></td> </tr> <tr> <td background=\"http://www.ru.com.br/img/new_meio.jpg\"><table width=\"800\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\"> <tr> <td width=\"92\"> </td> <td width=\"604\"><span class=\"style1\"> Ao Sr.(a) $nome <br /> <br /> $mensagem1 </span></td> <td width=\"102\"> </td> </tr> </table></td> </tr> <tr> <td><img src=\"http://www.eu.com.br/img/new_base.jpg\" width=\"800\" height=\"173\" /></td> </tr> </table>"; //DEFINE O CABEÇALHO E INFORMAÇÕES DE FORMATO $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; //CRIA O CABEÇALHO PRINCIPAL $headers .= "From: Nós <eu@eu.com.br>\r\n"; //ENVIA O EMAIL PARA O ENDEREÇO EM QUESTAO NO MOMENTO mail($email,$titulo,$mensagem,$headers); } ?> <p>Newletter enviado com sucesso! </p> <p><a href="adm.php">Voltar</a></p> Obrigada Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Humberto Rodrigues 0 Denunciar post Postado Julho 22, 2009 Uma alternativa mais rápida para resolver este problema, pode ser limitar os registros através do SQL. Algo do tipo: $select = "SELECT * FROM mail WHERE id >=1 and id<=350"; Se a quantidade de emails a ser enviada, for muito grande, claro que é melhor desenvolver algum script para fazer isto. O campo ID foi uma alusão ao campo chave de sua tabela. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
AAninh@ 0 Denunciar post Postado Julho 22, 2009 Isso vai fazer com que só mande 350/hora? Tenho um banco de dados com 2 mil e-mails, e que tende a aumentar. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Julho 22, 2009 Não vai fazer mandar somente 350/hora. Para fazer isto, você vai ter que usar sleep() e/ou cronjob (Linux) Agendador de Tarefas (Windows), além de set_time_limit. http://br.php.net/sleep http://br.php.net/manual/pt_BR/function.set-time-limit.php Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
AAninh@ 0 Denunciar post Postado Julho 27, 2009 Seria mais ou menos assim: mysql_select_db($database_polis_bdcon, $polis_bdcon); $select = "SELECT * FROM mail"; $query = mysql_query($select); $total = mysql_num_rows($query); set_time_limit(0); $emails_por_hora = 250; $enviados = 0; for($i=0;$i<$total;$i++){ if ($enviados == $emails_por_hora) { $enviados = 0; sleep(3600); } $enviados++; $dados = mysql_fetch_array($query); global $nome; $nome = $dados["nome"]; $email = $dados["email"]; $titulo = $_POST["titulo"]; $mensagem1 = wordwrap(nl2br($_POST["mensagem"]),68,"\n",true); $mensagem = " <style type=\"text/css\"> <!-- .style1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; } --> </style> <table width=\"800\" cellpadding=\"0\" cellspacing=\"0\"> <tr> <td><img src=\"http://www.eu.com.br/img/new_top.jpg\" width=\"800\" height=\"252\" /></td> </tr> <tr> <td background=\"http://www.eu.com.br/img/new_meio.jpg\"><table width=\"800\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\"> <tr> <td width=\"92\"> </td> <td width=\"604\"><span class=\"style1\"> Ao Sr.(a) $nome <br /> <br /> $mensagem1 </span></td> <td width=\"102\"> </td> </tr> </table></td> </tr> <tr> <td><img src=\"http://www.eu.com.br/img/new_base.jpg\" width=\"800\" height=\"173\" /></td> </tr> </table>"; //DEFINE O CABEÇALHO E INFORMAÇÕES DE FORMATO $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; //CRIA O CABEÇALHO PRINCIPAL $headers .= "From: Eu<eu@eu.com.br>\r\n"; //ENVIA O EMAIL PARA O ENDEREÇO EM QUESTAO NO MOMENTO mail($email,$titulo,$mensagem,$headers); $enviados++; } Obrigada Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Julho 27, 2009 Quase isto. Você está somando $enviados++ duas vezes no mesmo script e a lógica tá meio estranha... Tenta assim. mysql_select_db($database_polis_bdcon, $polis_bdcon); $select = "SELECT * FROM mail"; $query = mysql_query($select); set_time_limit(0); $emails_por_hora = 250; $enviados = 0; while ($dados = mysql_fetch_array($query)) { if ($enviados == $emails_por_hora) { $enviados = 0; sleep(3600); } global $nome; $nome = $dados["nome"]; $email = $dados["email"]; E daí você deixa o $enviados++ no final do código. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Julho 27, 2009 O ideal é aproveitar a hora toda e não disparar um "monte" de uma vez e esperar 1h... Se pode enviar 350 por hora você pode enviar 5.8 por minuto... Seria bom então enviar um e-mail e pausar 12s... Isso vai enviar 5 e-mails por minuto e vai manter o limite de 350 por hora. :) Se você fizer isso de acumular vários e-mails de uma vez e depois parar o script por 1h seu servidor pode rejeitar as mensagens pois elas foram acumuladas muito rápido... Você está trabalhando com um WebHost não com um servidor dedicado optimizado para disparo de e-mail*... * Conheço um que entregam de 3 a 5 mil e-mails por minuto.. :S Compartilhar este post Link para o post Compartilhar em outros sites
AAninh@ 0 Denunciar post Postado Julho 27, 2009 ok, vou tentar fazer aqui e posto alguma dúvida. Obrigada Abraços Compartilhar este post Link para o post Compartilhar em outros sites
IntDigital.com.br 0 Denunciar post Postado Julho 28, 2009 O ideal é aproveitar a hora toda e não disparar um "monte" de uma vez e esperar 1h... Se pode enviar 350 por hora você pode enviar 5.8 por minuto... Seria bom então enviar um e-mail e pausar 12s... Isso vai enviar 5 e-mails por minuto e vai manter o limite de 350 por hora. :) Se você fizer isso de acumular vários e-mails de uma vez e depois parar o script por 1h seu servidor pode rejeitar as mensagens pois elas foram acumuladas muito rápido... Você está trabalhando com um WebHost não com um servidor dedicado optimizado para disparo de e-mail*... * Conheço um que entregam de 3 a 5 mil e-mails por minuto.. :S Olá Amigo, pode me passar mais informações sobre esse disparo para 3 ou 5 mil por minuto ? Abraços. Se puder, apololira@gmail.com. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
AAninh@ 0 Denunciar post Postado Agosto 28, 2009 Então como faço para enviar 5.8 por minuto? enviar um e-mail e pausar 12s? Meu código está assim: mysql_select_db($database); $select = "SELECT * FROM mail"; $query = mysql_query($select); set_time_limit(0); $emails_por_hora = 250; $enviados = 0; while ($dados = mysql_fetch_array($query)) { if ($enviados == $emails_por_hora) { $enviados = 0; sleep(3600); } global $nome; $nome = $dados["nome"]; $email = $dados["email"]; $titulo = $_POST["titulo"]; $mensagem1 = wordwrap(nl2br($_POST["mensagem"]),68,"\n",true); $mensagem = " <style type=\"text/css\"> <!-- .style1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; } --> </style> <table width=\"800\" cellpadding=\"0\" cellspacing=\"0\"> <tr> <td><img src=\"http://www.eu.com.br/img/new_top.jpg\" width=\"800\" height=\"252\" /></td> </tr> <tr> <td background=\"http://www.eu.com.br/img/new_meio.jpg\"><table width=\"800\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\"> <tr> <td width=\"92\"> </td> <td width=\"604\"><span class=\"style1\"> Ao Sr.(a) $nome <br /> <br /> $mensagem1 </span></td> <td width=\"102\"> </td> </tr> </table></td> </tr> <tr> <td><img src=\"http://www.eu.com.br/img/new_base.jpg\" width=\"800\" height=\"173\" /></td> </tr> </table>"; //DEFINE O CABEÇALHO E INFORMAÇÕES DE FORMATO $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; //CRIA O CABEÇALHO PRINCIPAL $headers .= "From: Eu<eu@eu.com.br>\r\n"; //ENVIA O EMAIL PARA O ENDEREÇO EM QUESTAO NO MOMENTO mail($email,$titulo,$mensagem,$headers); $enviados++; } Obrigada... Abraços Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Agosto 28, 2009 Use sleep para pausar o script... Pausa de 12 segundos: sleep(12); Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Agosto 29, 2009 Falou tudo tiu talk. Compartilhar este post Link para o post Compartilhar em outros sites
AAninh@ 0 Denunciar post Postado Agosto 29, 2009 Então meu código ficara assim: mysql_select_db($database); $select = "SELECT * FROM mail"; $query = mysql_query($select); set_time_limit(0); $emails_por_hora = 300; $enviados = 0; while ($dados = mysql_fetch_array($query)) { if ($enviados == $emails_por_hora) { $enviados = 0; sleep(12); } global $nome; $nome = $dados["nome"]; $email = $dados["email"]; $titulo = $_POST["titulo"]; $mensagem1 = wordwrap(nl2br($_POST["mensagem"]),68,"\n",true); $mensagem = " <style type=\"text/css\"> <!-- .style1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; } --> </style> <table width=\"800\" cellpadding=\"0\" cellspacing=\"0\"> <tr> <td><img src=\"http://www.eu.com.br/img/new_top.jpg\" width=\"800\" height=\"252\" /></td> </tr> <tr> <td background=\"http://www.eu.com.br/img/new_meio.jpg\"><table width=\"800\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\"> <tr> <td width=\"92\"> </td> <td width=\"604\"><span class=\"style1\"> Ao Sr.(a) $nome <br /> <br /> $mensagem1 </span></td> <td width=\"102\"> </td> </tr> </table></td> </tr> <tr> <td><img src=\"http://www.eu.com.br/img/new_base.jpg\" width=\"800\" height=\"173\" /></td> </tr> </table>"; //DEFINE O CABEÇALHO E INFORMAÇÕES DE FORMATO $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; //CRIA O CABEÇALHO PRINCIPAL $headers .= "From: Eu<eu@eu.com.br>\r\n"; //ENVIA O EMAIL PARA O ENDEREÇO EM QUESTAO NO MOMENTO mail($email,$titulo,$mensagem,$headers); $enviados++; } Obrigada Abraços Compartilhar este post Link para o post Compartilhar em outros sites
AAninh@ 0 Denunciar post Postado Agosto 29, 2009 O código acima que postei está certo? não tenho que mudar mais nada? Obrigada Abraços Compartilhar este post Link para o post Compartilhar em outros sites
AAninh@ 0 Denunciar post Postado Agosto 29, 2009 Tenho que manter o navegador aberto enquanto envia? Obrigada Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Agosto 29, 2009 Tem que manter sim. PS : Retirado o 'Resolvido'. Compartilhar este post Link para o post Compartilhar em outros sites
AAninh@ 0 Denunciar post Postado Agosto 29, 2009 Obrigada Estou testando com o sequinte código, assim que tiver uma resposta se deu certo ou não, posto aqui para agradecer ou para novamente tentarmos resolver o problema. mysql_select_db(...); $select = "SELECT * FROM mail"; $query = mysql_query($select); set_time_limit(0); $emails_por_hora = 250; $enviados = 0; while ($dados = mysql_fetch_array($query)) { if ($enviados == $emails_por_hora) { $enviados = 0; sleep(3600); } global $nome; $nome = $dados["nome"]; $email = $dados["email"]; $titulo = $_POST["titulo"]; $mensagem1 = wordwrap(nl2br($_POST["mensagem"]),68,"\n",true); $mensagem = " <style type=\"text/css\"> <!-- .style1 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; } --> </style> <table width=\"800\" cellpadding=\"0\" cellspacing=\"0\"> <tr> <td><img src=\"http://www.eu.com.br/img/new_top.jpg\" width=\"800\" height=\"252\" /></td> </tr> <tr> <td background=\"http://www.eu.com.br/img/new_meio.jpg\"><table width=\"800\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\"> <tr> <td width=\"92\"> </td> <td width=\"604\"><span class=\"style1\"> Ao Sr.(a) $nome <br /> <br /> $mensagem1 </span></td> <td width=\"102\"> </td> </tr> </table></td> </tr> <tr> <td><img src=\"http://www.eu.com.br/img/new_base.jpg\" width=\"800\" height=\"173\" /></td> </tr> </table>"; //DEFINE O CABEÇALHO E INFORMAÇÕES DE FORMATO $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; //CRIA O CABEÇALHO PRINCIPAL $headers .= "From: Eu<eu@eu.com.br>\r\n"; //ENVIA O EMAIL PARA O ENDEREÇO EM QUESTAO NO MOMENTO mail($email,$titulo,$mensagem,$headers); $enviados++; } Muito Obrigada Abraços Compartilhar este post Link para o post Compartilhar em outros sites
AAninh@ 0 Denunciar post Postado Agosto 30, 2009 Pessoal coloquei as newsletters para enviar às 17:00h e ate agora não deu nenhum problema, ou seja o meu site não foi suspenso. Muito Obrigada pela ajuda Abraços http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
metalheart 0 Denunciar post Postado Agosto 31, 2009 Bom galera, so pra contribuir, o PHPList trabalha bem com isso, você pode configurar qtos e-mail por hora, assim como tbm a forma como o tiu talk disse... É um excelente sistema de newsletters... Ta aí a dica abraços Compartilhar este post Link para o post Compartilhar em outros sites
AAninh@ 0 Denunciar post Postado Novembro 8, 2009 está dando erro na linha 10: Parse error: syntax error, unexpected T_VARIABLE in /home/phfmiran/public_html/poladmin/envio_email.php on line 10. $emails_por_hora = 300; O que tem de errado com ela? Compartilhar este post Link para o post Compartilhar em outros sites