+2

Enviar email para uma lista de emails

criado por Rafael Zanoni em 19/07/2002 7:49pm
Vamos criar inicialmente o arquivo com os campos do formulário no qual será escrita a mensagem a ser enviada para os emails cadastrados no banco de dados MySQL.

1- Crie um arquivo html com o código abaixo:

<form name="mensagem" method="post" action="enviar.php">
  <p align="center"> <font face="Verdana, Arial, Helvetica, sans-serif" color="#0000FF"><font size="2"><br>
    Assunto: 
    <input type="text" name="assunto"  width= 300px">
    </font></font>
  <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#0000FF"><font size="2"><br>
    Mensagem:</font></font>
  <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif" color="#0000FF">
<textarea name="message" rows="18" cols="60"  ></textarea>
    </font><br>
    <input type="submit" name="alterar" value="Enviar">
</form>

Obs: óbvio que esse form pode ter outros campos, do jeito que você quiser - o importante é a lógica, lembre-se que a propriedade name dos campos serão usadas como variáveis.

Comentários:

Mostrando 1 - 10 de 10 comentários
g disse:
ola eu tenho uma ferramenta administrativa que organiza os destinatarios entao uso uma classe que pega do banco os destinarios o assunto e envia o e-mail mais ele só esta enviando para e-mails com @bizplace.com.br para nenhum outro mais
gostaria que me desse uma luz ai vai o código:






<?
// Instancia os objetos
//require_once $path_classes."PEAR/Mail.php";
//require_once $path_classes."PEAR/Mail/mime.php";

//$mailobj =& Mail::factory($config->mail_opt["driver"], $config->mail_opt);
//$o_sql = new SQL();

// Includes
include("./templates/header.php");
include($path_classes."admin/config/config_tabela.php");
include($path_classes."admin/config/config_form.php");

$o_form = new Form();
$o_form = config_frm( $o_form );
$o_form->descricao = "&raquo; Newsletter &raquo; Enviar";
$o_form->print_desc();
$o_sql = new SQL();
$o_geral = new Geral();

echo $o_form->frm_prefix;

// Envia emails
// ----------------------------------------

IF ($tipo=="testar")
{
// Pega o destinatário (email do user logado)
$tupla = $o_sql->select("SELECT distinct(usu_e_mail) FROM usuario WHERE usu_codigo='".$_SESSION["dados"]["usu_codigo"]."'");
}
ELSE
{
// Pega os destinatários
$in = "";
for ( $ind=0; $ind<sizeof($gru_cod); $ind++)
{
$in .= $gru_cod[$ind];
IF ($ind<sizeof($gru_cod)-1)
$in .= ",";
}
if ($reman==1)
$and = " AND usu_enviad='0'";

if ($filtro!="")
{
$o_sql->execSql("update usuario set usu_enviad = '0' WHERE gru_codigo IN ($in) ".$filtro);
$tupla = $o_sql->select("SELECT distinct(usu_e_mail)
FROM usuario
WHERE gru_codigo IN ($in) "
.$filto.$and );
}
else
{
$o_sql->execSql("update usuario set usu_enviad = '0' WHERE gru_codigo IN ($in) AND usu_newsle='1'");
$tupla = $o_sql->select("SELECT distinct(usu_e_mail)
FROM usuario
WHERE gru_codigo IN ($in)
AND usu_newsle='1' ".$and );
}


}

if ($assunto=="")
{
list($ntx_codigo) = $_GET['ntx_codigo'];
// Pega o assunto da mensagem
$tupla2 = $o_sql->select("SELECT new_descri FROM newsletter WHERE new_codigo=$new_codigo");
$assunto = $tupla2[0]["new_descri"];
//echo "SELECT ntx_conteu FROM news_texto WHERE ntx_codigo=$ntx_codigo";
$vet = $o_sql->select("SELECT ntx_conteu FROM news_texto WHERE ntx_codigo='$ntx_codigo'");
$conteudo = $vet[0]["ntx_conteu"];
}

/*$mime =& new Mail_mime();
$mime->setHTMLBody($message);
$body = $mime->get();
*/$body = $message;
$headers = array();

//$headers['From'] = $config->nome_resp." <".$config->email_resp.">";
// $headers['To'] = "dud@bizplace.com.br";
$headers['Subject'] = $assunto;

$c1=0;
$sto=$msg="";

for ( $ind=0; $ind<sizeof($tupla); $ind++)
{
$sto.=$tupla[$ind]["usu_e_mail"];

if((sizeof($tupla)-1)>$ind) $sto.=",";

#if ($c1==$config->mail_fila_qtd)
$c1 = true;
if ($c1)
{
$to = $sto;
$tto = $to;

$bcc = "Bcc:".$tto;
// Envia Mensagem
#$retorno = $mailobj->send($to, $headers, $body);
echo "<pre>";
//print_r($bcc);
echo "</pre>";
#$eMail = mail("adler@bizplace.com.br,adlerdesigner@hotmail.com,","mensagem teste","MENSAGEM TESTE");
#if($eMail) { echo "enviado"; } else { echo "nao enviado"; }
#echo "headers:::::: <pre>";
#print_r($headers);
#echo "</pre>";
#$headers[MIME-Version] . $headers[Content-Type] .
#$headers[Content-Transfer-Encoding] . $headers[From] . $headers[Subject];
#echo "<br>";
$subject = $headers[Subject];
#echo "<br>";
$from = "Goedert <goedert@bizplace.com.br>";
#echo "<br>";
// Cabeçalhos que definem o e-mail como sendo em formato HTML
$cabeca = "MIME-Version: 1.0\n";
$cabeca .= "Content-type: text/html; charset=iso-8859-1\n";
#$cabeca .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$cabeca .= "From: ".$from."\n";
$cabeca .= "Return-Path: Goedert <goedert@bizplace.com.br>\n";
#$cabeca .= "Bcc: ".$tto."\n";
#$cabeca .= "To: <$tto>\n";

#$headers = "From: ".$email."\r\n" .
#"MIME-Version: 1.0\r\n" .
#"Content-Type: text/html; charset=windows-1252\r\n" .
#"Content-Transfer-Encoding: 8bit\r\n\r\n";

$corpo = $conteudo;
$corpo .= "<center><a href='http://goedert.bizwork.com.br/news_cancelar.php?email={$tupla[$ind]['usu_e_mail']}'><img src='http://goedert.bizwork.com.br/imagens/b_cancelar.jpg&#039; border=0></a></center>";
//echo $corpo;
//$retorno = mail("adler@bizplace.com.br,adlerdesigner@hotmail.com,adlerdesigner@gmail.com", "TESTE", $corpo, $cabeca); // retorna todos os emails
//echo $o_geral->alert();
$retorno = mail($tto, $subject, $corpo, $cabeca);

//$retorno = mail($emails, $subject, $corpo, $cabeca);


//$retorno = $mailobj->send($tto, $headers, $body);
//$retorno = TRUE;
IF ($retorno!==TRUE)
{
$msg = "<div align='left' valign='top' class='{$o_form->desc_class}'>Erro ao enviar e-mail!<br></div><br><br>";
break;
}
$c1 = 0;
$sto="";
}
$o_sql->execSql("update usuario set usu_enviad = '1' where usu_e_mail = '".$tupla[$ind]["usu_e_mail"]."'");
$c1++;
}

if ($sto<>"")
{
// Envia Mensagem
$sto.=$tupla[$ind]["usu_e_mail"].",";
if ($c1==$config->mail_fila_qtd)
{
$to = $sto;
$tto = $to;
$bcc = "Bcc:".$tto;
// Envia Mensagem
$subject = $headers[Subject];
$from = "Goedert <goedert@bizplace.com.br>";
// Cabeçalhos que definem o e-mail como sendo em formato HTML
$cabeca = "MIME-Version: 1.0\n";
$cabeca .= "Content-type: text/html; charset=iso-8859-1\n";
#$cabeca .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$cabeca .= "From: ".$from."\n";
$cabeca .= "Return-Path: Goedert <goedert@bizplace.com.br>\n";
//$cabeca .= "Bcc: ".$tto."\n";
#$cabeca .= "To: <$tto>\n";

#$headers = "From: ".$email."\r\n" .
#"MIME-Version: 1.0\r\n" .
#"Content-Type: text/html; charset=windows-1252\r\n" .
#"Content-Transfer-Encoding: 8bit\r\n\r\n";
$corpo = $conteudo;
$corpo .= "<center><a href='http://goedert.bizwork.com.br/news_cancelar.php?email={$tupla[$ind]['usu_e_mail']}'><img src='http://goedert.bizwork.com.br/imagens/b_cancelar.jpg&#039; border=0></a> </center>";

//echo $to;

$retorno = mail($to, $subject, $corpo, $cabeca);
//echo $cabeca;
//$retorno = TRUE;
IF ($retorno!==TRUE)
{
$msg = "<div align='left' valign='top' class='{$o_form->desc_class}'>Erro ao enviar e-mail!<br></div><br><br>";
break;
}
$c1 = 0;
$sto="";
}
$o_sql->execSql("update usuario set usu_enviad = '1' where usu_e_mail = '".$tupla[$ind]["usu_e_mail"]."'");
$c1++;

}

// Mensagem de OK...
IF ( $msg!=="" )
$ind = $ind-$config->mail_fila_qtd;

// Mensagem de OK...
echo "<div align='left' valign='top' class='{$o_form->desc_class}'>&nbsp;{$ind}&nbsp;Mensagens Enviadas&nbsp;</div><br><br>";
IF ( $msg!=="" )
echo $msg;
echo "<a href='news_enviar.php' class='titulo4'&laquo;>&laquo; Voltar</a>";

echo $o_form->frm_sufix;

include("./templates/footer.php");
?>
05/05/2010 12:04pm (~6 anos atrás)

g disse:
ola eu tenho uma ferramenta administrativa que organiza os destinatarios entao uso uma classe que pega do banco os destinarios o assunto e envia o e-mail mais ele só esta enviando para e-mails com @bizplace.com.br para nenhum outro mais
gostaria que me desse uma luz ai vai o código:






<?
// Instancia os objetos
//require_once $path_classes."PEAR/Mail.php";
//require_once $path_classes."PEAR/Mail/mime.php";

//$mailobj =& Mail::factory($config->mail_opt["driver"], $config->mail_opt);
//$o_sql = new SQL();

// Includes
include("./templates/header.php");
include($path_classes."admin/config/config_tabela.php");
include($path_classes."admin/config/config_form.php");

$o_form = new Form();
$o_form = config_frm( $o_form );
$o_form->descricao = "&raquo; Newsletter &raquo; Enviar";
$o_form->print_desc();
$o_sql = new SQL();
$o_geral = new Geral();

echo $o_form->frm_prefix;

// Envia emails
// ----------------------------------------

IF ($tipo=="testar")
{
// Pega o destinatário (email do user logado)
$tupla = $o_sql->select("SELECT distinct(usu_e_mail) FROM usuario WHERE usu_codigo='".$_SESSION["dados"]["usu_codigo"]."'");
}
ELSE
{
// Pega os destinatários
$in = "";
for ( $ind=0; $ind<sizeof($gru_cod); $ind++)
{
$in .= $gru_cod[$ind];
IF ($ind<sizeof($gru_cod)-1)
$in .= ",";
}
if ($reman==1)
$and = " AND usu_enviad='0'";

if ($filtro!="")
{
$o_sql->execSql("update usuario set usu_enviad = '0' WHERE gru_codigo IN ($in) ".$filtro);
$tupla = $o_sql->select("SELECT distinct(usu_e_mail)
FROM usuario
WHERE gru_codigo IN ($in) "
.$filto.$and );
}
else
{
$o_sql->execSql("update usuario set usu_enviad = '0' WHERE gru_codigo IN ($in) AND usu_newsle='1'");
$tupla = $o_sql->select("SELECT distinct(usu_e_mail)
FROM usuario
WHERE gru_codigo IN ($in)
AND usu_newsle='1' ".$and );
}


}

if ($assunto=="")
{
list($ntx_codigo) = $_GET['ntx_codigo'];
// Pega o assunto da mensagem
$tupla2 = $o_sql->select("SELECT new_descri FROM newsletter WHERE new_codigo=$new_codigo");
$assunto = $tupla2[0]["new_descri"];
//echo "SELECT ntx_conteu FROM news_texto WHERE ntx_codigo=$ntx_codigo";
$vet = $o_sql->select("SELECT ntx_conteu FROM news_texto WHERE ntx_codigo='$ntx_codigo'");
$conteudo = $vet[0]["ntx_conteu"];
}

/*$mime =& new Mail_mime();
$mime->setHTMLBody($message);
$body = $mime->get();
*/$body = $message;
$headers = array();

//$headers['From'] = $config->nome_resp." <".$config->email_resp.">";
// $headers['To'] = "dud@bizplace.com.br";
$headers['Subject'] = $assunto;

$c1=0;
$sto=$msg="";

for ( $ind=0; $ind<sizeof($tupla); $ind++)
{
$sto.=$tupla[$ind]["usu_e_mail"];

if((sizeof($tupla)-1)>$ind) $sto.=",";

#if ($c1==$config->mail_fila_qtd)
$c1 = true;
if ($c1)
{
$to = $sto;
$tto = $to;

$bcc = "Bcc:".$tto;
// Envia Mensagem
#$retorno = $mailobj->send($to, $headers, $body);
echo "<pre>";
//print_r($bcc);
echo "</pre>";
#$eMail = mail("adler@bizplace.com.br,adlerdesigner@hotmail.com,","mensagem teste","MENSAGEM TESTE");
#if($eMail) { echo "enviado"; } else { echo "nao enviado"; }
#echo "headers:::::: <pre>";
#print_r($headers);
#echo "</pre>";
#$headers[MIME-Version] . $headers[Content-Type] .
#$headers[Content-Transfer-Encoding] . $headers[From] . $headers[Subject];
#echo "<br>";
$subject = $headers[Subject];
#echo "<br>";
$from = "Goedert <goedert@bizplace.com.br>";
#echo "<br>";
// Cabeçalhos que definem o e-mail como sendo em formato HTML
$cabeca = "MIME-Version: 1.0\n";
$cabeca .= "Content-type: text/html; charset=iso-8859-1\n";
#$cabeca .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$cabeca .= "From: ".$from."\n";
$cabeca .= "Return-Path: Goedert <goedert@bizplace.com.br>\n";
#$cabeca .= "Bcc: ".$tto."\n";
#$cabeca .= "To: <$tto>\n";

#$headers = "From: ".$email."\r\n" .
#"MIME-Version: 1.0\r\n" .
#"Content-Type: text/html; charset=windows-1252\r\n" .
#"Content-Transfer-Encoding: 8bit\r\n\r\n";

$corpo = $conteudo;
$corpo .= "<center><a href='http://goedert.bizwork.com.br/news_cancelar.php?email={$tupla[$ind]['usu_e_mail']}'><img src='http://goedert.bizwork.com.br/imagens/b_cancelar.jpg&#039; border=0></a></center>";
//echo $corpo;
//$retorno = mail("adler@bizplace.com.br,adlerdesigner@hotmail.com,adlerdesigner@gmail.com", "TESTE", $corpo, $cabeca); // retorna todos os emails
//echo $o_geral->alert();
$retorno = mail($tto, $subject, $corpo, $cabeca);

//$retorno = mail($emails, $subject, $corpo, $cabeca);


//$retorno = $mailobj->send($tto, $headers, $body);
//$retorno = TRUE;
IF ($retorno!==TRUE)
{
$msg = "<div align='left' valign='top' class='{$o_form->desc_class}'>Erro ao enviar e-mail!<br></div><br><br>";
break;
}
$c1 = 0;
$sto="";
}
$o_sql->execSql("update usuario set usu_enviad = '1' where usu_e_mail = '".$tupla[$ind]["usu_e_mail"]."'");
$c1++;
}

if ($sto<>"")
{
// Envia Mensagem
$sto.=$tupla[$ind]["usu_e_mail"].",";
if ($c1==$config->mail_fila_qtd)
{
$to = $sto;
$tto = $to;
$bcc = "Bcc:".$tto;
// Envia Mensagem
$subject = $headers[Subject];
$from = "Goedert <goedert@bizplace.com.br>";
// Cabeçalhos que definem o e-mail como sendo em formato HTML
$cabeca = "MIME-Version: 1.0\n";
$cabeca .= "Content-type: text/html; charset=iso-8859-1\n";
#$cabeca .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$cabeca .= "From: ".$from."\n";
$cabeca .= "Return-Path: Goedert <goedert@bizplace.com.br>\n";
//$cabeca .= "Bcc: ".$tto."\n";
#$cabeca .= "To: <$tto>\n";

#$headers = "From: ".$email."\r\n" .
#"MIME-Version: 1.0\r\n" .
#"Content-Type: text/html; charset=windows-1252\r\n" .
#"Content-Transfer-Encoding: 8bit\r\n\r\n";
$corpo = $conteudo;
$corpo .= "<center><a href='http://goedert.bizwork.com.br/news_cancelar.php?email={$tupla[$ind]['usu_e_mail']}'><img src='http://goedert.bizwork.com.br/imagens/b_cancelar.jpg&#039; border=0></a> </center>";

//echo $to;

$retorno = mail($to, $subject, $corpo, $cabeca);
//echo $cabeca;
//$retorno = TRUE;
IF ($retorno!==TRUE)
{
$msg = "<div align='left' valign='top' class='{$o_form->desc_class}'>Erro ao enviar e-mail!<br></div><br><br>";
break;
}
$c1 = 0;
$sto="";
}
$o_sql->execSql("update usuario set usu_enviad = '1' where usu_e_mail = '".$tupla[$ind]["usu_e_mail"]."'");
$c1++;

}

// Mensagem de OK...
IF ( $msg!=="" )
$ind = $ind-$config->mail_fila_qtd;

// Mensagem de OK...
echo "<div align='left' valign='top' class='{$o_form->desc_class}'>&nbsp;{$ind}&nbsp;Mensagens Enviadas&nbsp;</div><br><br>";
IF ( $msg!=="" )
echo $msg;
echo "<a href='news_enviar.php' class='titulo4'&laquo;>&laquo; Voltar</a>";

echo $o_form->frm_sufix;

include("./templates/footer.php");
?>
05/05/2010 12:04pm (~6 anos atrás)

Alguem pode me ajudar, tipo, eu preciso enviar uns 15ooo e-mails, so q falei com o admin do meu server e ele disse q so envia 100 e-mail por hora, n mais q isso!

alguem pode me dizer uma forma de enviar pelo menos mil, eu tentei um programa, ele gerava um smtp proprio, mas n deu certo!!!!

Alguem sabe algum ou algum lugar q tenha uns tuto disso!?

Vlw ai galera!!!
20/03/2007 7:28pm (~9 anos atrás)

Rafael Haro disse:
Olá Galera,

valter : Sua dúvida, é q quando o PHP le o codigo ele coloca a barra, entao para nao acontecer isso vc usa este codigo:

$mensagem2 = stripslashes($mensagem);
/*$mensagem2 : É a variavel que vai fikar armazenado a mensagem sem as \.

$mensagem : É a variavel q tem a mensagem inicial.
*/
Espero ter ajudado
31/07/2006 9:07am (~10 anos atrás)

eu tenho uma msg q usa código html para chamar uma imagem jpg q é o corpo da msg... mas qdo envio o script exibe o código html...
=/
10/03/2006 7:42am (~10 anos atrás)

alguem me ajudaria a configurar o mail do PHP ja procurei aki no sitio, mas nao to achando.

Abraços
03/09/2004 12:42pm (~12 anos atrás)

Olá!
Pelos comentários não postados a + de uma ano, acredito que não há duvidas de que o sistema funciona para todos.
PRECISO de ajuda para melhorar e mandar news para cada area de interesse do cadastro, alguém pode me enviar algum script para eu adaptar e postar aqui para download?
Basta conferir o cadastro em http://www.ganhei.net/e-negocios/cadastro.php para mandar news geral acabei usando o sistema HPO aqui da phpbrasil que ficou legal.
Saudaçoes;
Virtual
Iniciante PHP e MySQL
25/01/2004 9:56pm (~13 anos atrás)

Olha Patrik, os destinatários vc tem que guardar em um banco de dados e aí vc vai cadastrar todos os destinatários lá e depois é só criar um script php com um laço que vai enviando sua mensagem para cada endereço cadastrado no banco de dados através da função de envio de e-mails.
01/12/2002 9:59pm (~14 anos atrás)

Ademir Lima disse:
Indo no embalo, qual é a função mesmo que tira o limite de upload (2MB nas maiorias)??
26/07/2002 1:34am (~14 anos atrás)

Ricardo,

Na verdade não há um limite para a operação de envio de emails, o seu problema é que o sistema operacional leva muito mais que o tempo de espera limite do seu browser para efetuar a operação de envio para toda a lista.

Solução: executar a aplicação em background, ou seja, não como uma página web e sim como um aplicativo independente. Para isso você deverá executar o script a partir do interpretador independente do PHP e não a partir do servidor web.

No seu caso eu aconselharia o uso de um gerenciador de listas, como o mailman ou majordomo, um script em PERL ou até mesmo um programa em C.


Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br
www.vivaolinux.com.br
23/07/2002 7:51pm (~14 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)