Jump to content


Photo

Script Para Mandar Vários E-mails


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

#1 RinaldFN

RinaldFN

    12 Horas

  • Usuários
  • 294 posts
  • Sexo:Não informado

Posted 18/02/2006, 23:57

Olá a todos,

Sou iniciante em php, e resolvi criar um script para mandar vários e-mails de uma vez só, em um sistema de newsletter.

Eu tenho os e-mails cadastrados em um banco de dados mysql.

Gostaria de saber se está forma que fiz é a ideal, ou se existe uma maneira mais eficiente. Se tiver 5 mil e-mails cadastrados no Banco.. irá demorar muito pra enviar?

vejam:


<?
$conect=mysql_connect("localhost","usuario","senha");
$select=mysql_select_db("banco");
$mensagem=$_POST['mensagem'];
$titulo=$_POST['titulo'];
$msg=nl2br($mensagem);
$msg_x='<font color="#666666" face="Arial" size=1>'.$msg.'</font>';
//#######################
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

/* headers adicionais */

$headers .= "From: informativo  <email@servidor.ind.br>\r\n";


//##############################
$sql = mysql_query("SELECT * FROM news");
  while ($row = mysql_fetch_array($sql)) {
    $email=$row['email'];

	
mail($email,$titulo,$msg_x,$headers);

}

echo '<h4>Sua Mensagem foi enviada há todos usuários cadastrados</h4>';

?>



Obrigado!

#2 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 19/02/2006, 00:19

está maneira está correta, porém da pra deixa-la um pouquinho melhor :D

<?php

$Con = mysql_connect("localhost","usuario","senha");
mysql_select_db("banco");

$Mensagem = "<font color='#666666' face='Arial' size=1>".nl2br($_POST['mensagem'])."</font>";

$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: informativo  <email@servidor.ind.br>\r\n";

$Sql = mysql_query("SELECT * FROM news");
while ($RRr = mysql_fetch_array($sql)) {
  echo (mail($RRr['email'],$_POST['titulo'],$Mensagem,$headers)) ? "Email [{$RRr['email']}] enviado com sucesso<br>":"Erro ao enviar o email [{$RRr['email']}]<br>";
}

mysql_close($Con);

?>


T+

Edição feita por: Goku Jr, 19/02/2006, 00:22.

-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#3 RinaldFN

RinaldFN

    12 Horas

  • Usuários
  • 294 posts
  • Sexo:Não informado

Posted 19/02/2006, 00:41

Opa! Valeu Goku Jr

Só não entendi esta linha:

echo (mail($RRr['email'],$_POST['titulo'],$Mensagem,$headers)) ? "Email [{$RRr['email']}] enviado com sucesso<br>":"Erro ao enviar o email [{$RRr['email']}]<br>";

No caso o echo não serve só pra imprimir na tela? Colocando a função mail dentro executará normal?

E no caso também fará uma verificação se o mail foi executado com sucesso? caso contário imprimirá na tela "Erro ao enviar email" ?


Outra dúvida: (desculpem o questionário rs) : Se eu tiver uma lista de 5 mil e-mails cadastrados no banco por exemplo, não vai demorar muito para fazer o loop e mandar todos os e-mails?

Obrigado pela atenção Goku Jr!

#4 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 19/02/2006, 01:21

No caso o echo não serve só pra imprimir na tela? Colocando a função mail dentro executará normal?

E no caso também fará uma verificação se o mail foi executado com sucesso? caso contário imprimirá na tela "Erro ao enviar email" ?


o ECHO assim como a várivel, pode fazer uma VERIFICAÇÃO ( é como se fosse usar o IF ) com 1 ou + condições:

Ex: de ECHO -> echo ($variavel == 1) ? "{$variavel} é igual 1}" : "$variavel não é igual à 1";

explicando: exiba se variavel for igual a 1 mensagem 1 caso contrario mensagem 2
PS: deu pra entender ?

o ? seria a primeira CONDIÇÃO e o : seria a segunda condição.

Ex: de Variavel -> $Variavel = ($variavel == 1) ? 2 : 1;
explicando: variavel igual se variavel for igual 1 defina 2 caso contrario defina 1
PS: entendeu ?

+ condições já fica meio que CONFUSO :P

<?php

$variavel1 = 1;
$variavel2 = 2;

echo ($variavel1 == 1) ? $variavel2 == 2 ? "é igual à 2":"não é igual à 2":"não é igual à 1";

?>

PS: entendes ?

bom sobre o 5MIL emails você tera que colocar um uma função de tempo pq se não irá dar erro de tempo limite ou algo do tipo :P

use a função "sleep"
para leitura: www.php.net/sleep

você irá coloca-la dentro do IF que tem dentro do WHILE ;)

qualquer dúvida e só falar

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#5 RinaldFN

RinaldFN

    12 Horas

  • Usuários
  • 294 posts
  • Sexo:Não informado

Posted 20/02/2006, 00:21

Olá amigo!

Entendi certinho sua explicação! Valeu mesmo!

Mas sobre o tempo de enviar os e-maisl que estou na dúvida, pois como saberei qual o maximo de e-mails que poderei enviar na primeira remessa? Eu sei que tenho que converssar com o pessoal do servidor para saber o limite de e-mail por hora ou por dia.

Para mandar para umas 300 pessoas demoraria muito no loop?

#6 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 20/02/2006, 07:17

no caso não pensei em 1 coisa :P

com você mesmo disse usando a função SLEEP iria demorar muito até que termina-se o LOOP . assim acho + viavel você usar um "gerenciador de tarefas" que o cpainel possui

da uma procurada aqui no fórum a respeito pois já vi alguns tópicos sobre o assunto

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#7 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 20/02/2006, 15:24

Só não entendi esta linha:

echo (mail($RRr['email'],$_POST['titulo'],$Mensagem,$headers)) ? "Email [{$RRr['email']}] enviado com sucesso<br>":"Erro ao enviar o email [{$RRr['email']}]<br>";

Isto se chama operador trinário. Dá uma lida aqui para se informar mais sobre o assunto: Comparison Operators ;)

[]’s :DAté mais

#8 paes

paes

    GustavoPaes.Net

  • Usuários
  • 1393 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP
  • Interesses:Rumo ao topo!

Posted 20/02/2006, 15:26

é semelhante ao if()... se não me engano até mais rápido que ele em alguns casos.

se a condição for 'true' executa a ação entre o ? e : e se for false executa depois do :

até
Site: GustavoPaes.net

^ Rumo ao Topo ^

#9 RinaldFN

RinaldFN

    12 Horas

  • Usuários
  • 294 posts
  • Sexo:Não informado

Posted 21/02/2006, 17:40

Olá,

Consultei o pessoal do meu servidor e me informaram que só poderei enviar 200 e-mail por hora.

Qual é o melhor método a ser usado para enviar uma quantidade de 1000 e-mails.
Terei que fazer um script para mandar 200, eperar pr uma hora e depois enviar mais 200?


Ps: A maioria dos servidores usam este limite de 200 e-mails por hora?

Obrigado!

#10 TIAGOZONE

TIAGOZONE

    Novato no fórum

  • Usuários
  • 13 posts
  • Sexo:Não informado

Posted 10/12/2008, 21:46

RinalD


tem um webmaster proximo a minha casa q consegue enviar ate 75 mil emails... e el tem um serviço de 5mil, vou ver com ele q hospede ele usa! mandei email pra vc preciso de ajuda... abraços

#11 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 23/09/2017, 14:12

Soft Viagra Canadian Overnight online pharmacy Gsc.Tab 0




0 user(s) are reading this topic

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

IPB Skin By Virteq