Ajuda com envio de e-mails PHP

10 respostas
M

Boa noite galera!

to precisando de uma ajudar aki em um codigo php, to querendo enviar um email para varios destinatarios, esses destinatarios ja estão no banco de dados na tabela emails!
segue o codigo pra melhor entendimento:

<?php

	header ('Content-Type: text/html; charset=utf-8');
	require('PHPMailer/class.phpmailer.php');
	include ("conexao.php");
	
	// recebendo os dados do formulario
	if(isset($_POST['nome'])){
	
	$nome = ucwords($_POST['nome']);
	$recebeassunto = $_POST['assunto'];
	$recebemail = $_POST['email'];
	$recebemensagem = $_POST['msg'];
	
	$mail = new PHPMailer();
	$mail->IsSMTP();
	$mail->SMTPAuth = true;
	$mail->IsHTML = (true);
	$mail->Host = 'webmail25.redehost.com.br';
	$mail->Username = ('[email removido]');
	$mail->Password = ('********');
    $mail->SetFrom('[email removido]');
	$mail->Port = 587;
	

 
 

 	//envia a mensagem
	//corpo HTML chama a classe aki.
    $mail->Body = $msg;

	
	//Destinatarios
	$mail->AddAddress('[email removido]');
	
	//Assunto
	//$mail->Subject = $recebeassunto;
	
	$mail->From = "$email";
	$mail->Subject = "$nome";
	$mail->FromName = "$assunto";
	
	
	
	if($mail->Send())
		echo 'E-mails enviado com sucesso';
			else
				echo 'Erro ao enviar e-mail'.$mail->ErrorInfo;
	}
?>

alguém pode me ajudar, to usando a classe PHPMailer

ATT, Murillo Lima

10 Respostas

L

Estranho, não deu nenhum erro?

Tem algum firewall bloqueando o envio?

M

Não deu erro não, ta enviando certin so que eu quero enviar para varios outros e-mail não só pra um… os emails já estão na tabela no bd,
vc pode me ajudar, como posso fazer isso?

P

murillo_smit,

Faz um foreach ou while na coluna de e-mails e envia.

M

Tem como vc me passar um exemplo pedrinho20? no caso eu tenho q fazer o while nessa linha neh?

Agradeço se vc pode ajudar!

P

murillo_smit,

Você pode usar a seguinte lógica. Envie um e-mail para cada da coluna X da minha tabela de contatos.
Nessa tabela você fazer uma varredura com uma estrutura de repetição e executa uma ação.

Você sabe usar o foreach e trazer os registros do banco ? É basicamente isso …

http://blog.thiagobelem.net/for-foreach-e-while-repeticoes-e-lacos-no-php/

Capiche ?

P

vc tem pegar os registros do banco e fazer um forech como o pessoal falou.

$lista = $dao->listarEmails();

foreach($lista as $item){
  $mail->clearAllRecipients();
  $mail->addAddress($item['email']);
  $mail->send();
}
M

Cara tem como tu emplementar esse codigo ai no meu? to vuando aki perdido! :smiley: agradeço
Se tu quiser te passo a tabela do bd tbm.

M

Cara tem como tu emplementar esse codigo ai no meu? to vuando aki perdido! :smiley: agradeço
Se tu quiser te passo a tabela do bd tbm.

P

faça as coisas nessa ordem

1 - pegue os dados banco;

2 - faça um for/while nesses dados;

3 - dentro do for/while coloque o codigo q ta outro post(aquele limpa os destinatarios, inclues eles novamente e envia o email)
M
Eu to tentando fazer assim! so que ta dando erro, da uma olhada ai;
<?php

	header ('Content-Type: text/html; charset=utf-8');
	require('PHPMailer/class.phpmailer.php');
	include ("conexao.php");
	
	// recebendo os dados do formulario
	if(isset($_POST['nome'])){
	
	$nome = ucwords($_POST['nome']);
	$recebeassunto = $_POST['assunto'];
	$recebemail = $_POST['email'];
	$recebemensagem = $_POST['msg'];
	
	$mail = new PHPMailer();
	$mail->IsSMTP();
	$mail->SMTPAuth = true;
	$mail->IsHTML = (true);
	$mail->Host = 'webmail25.redehost.com.br';
	$mail->Username = ('[email removido]');
	$mail->Password = ('******');
    $mail->SetFrom('[email removido]');
	$mail->Port = 587;
	$mail->Addbcc ($para);
	


 

 	//envia a mensagem
	//corpo HTML chama a classe aki.
    $mail->Body =  utf8_decode($msg);

	//LAÇO DE REPETIÇÃO PARA ENVIAR PARA DESTINTARIOS
	 
        $tabela = "emails";
 
       // CAMPOS UTILIZADOS PARA A CONSULTA
        $campos = "id, nome, email, codStatus";
 
          // NUMERO MÁXIMO DE ENVIO
        $quant = 2;
 
            // TEMPO ENTRE UM PROCESSO DE ENVIO E OUTRO
        $seg = 10;
 
            // CONECTA COM O SERVIDOR MYSQL
        mysql_connect($host,$usuario,$senha);
 
            // SELECIONA O BANCO
         mysql_select_db($banco);
 
            // RESGATA O VALOR DA GLOBAL INICIO
            $inicio = $_GET["inicio"];
 
            // ATRIBUI O RESULTADO DA SOMA ENTRE INICIO E QUANT
          $fim = $inicio + $quant;
 
            // VERIFICA SE FOI ATRIBUIDO VALOR A VARIAVEL "INICIO"
           if($inicio == ""){
 
            // ATRIBUI O VALOR 0 CASO NAO EXISTA VALOR ATRIBUIDO
            $inicio = 0;
           }else{
 
            // ATRIBUI O VALOR DA GLOBAL INICIO CASO JA EXISTA VALOR ATRIBUIDO
            $inicio = $_GET["inicio"];
            }
 
            // EXECUTA A CONSULTA OU INFORMA UM ERRO CASO OCORRA
         $sql = mysql_query("SELECT ". $campos ." FROM ". $tabela ." WHERE codStatus = 0 LIMIT ". $inicio .",". $quant)or die(mysql_error());
 
            // VERIFICA SE AINDA EXISTEM EMAILS A SEREM ENVIADOS
           if(mysql_num_rows($sql) == 0){
 
            // ALTERANDO O VALOR DO CAMPO CODSTATUS PARA 0
            @mysql_query("UPDATE ". $tabela ." SET codStatus = 0");
 
            // INFORMO O TÉRMINO DO PROCESSO
            echo "Fim do processo de envio!";
			?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> alert ("E-mails enviado com sucesso! OK")</SCRIPT>

<SCRIPT language="JavaScript">window.location.href="admin/painel_contr.php";</SCRIPT>



<?
           }else{
 
            // CONTINUA EFETUANDO O ENVIO
           echo "<meta http-equiv=\"refresh\" content=\"" . $seg . ",URL=?inicio=". $fim ."\">";
            }
 
            // CRIA O LAÇO REPETITIVO
           while($r = mysql_fetch_array($sql)){
 
            // ADICIONAMOS OS PADROES DE DESTINATRIO
            $para = $r["email"];
	
	//Destinatarios
	//MUADAR AKI PARA TESTAR
	//$mail->AddAddress('[email removido]');

	//Assunto
	//$mail->Subject = $recebeassunto;
	
	$mail->From = "$email";
	$mail->Subject = "$nome";
	$mail->FromName = "$assunto";
	
	
	
	           if($mail->Send()){
                echo "<hr />Mensagem enviada para: ". $para ."<br />";
 
                //Altero o código para 1 para parar o envio do loop
 
                @mysql_query("UPDATE". $tabela ."SET codStatus = 1 WHERE id = 1".$id);
 
            } else {
                echo "Mensagem nao enviada para: ". $para ."<br />";
            }
            }
	}
?>
Criado 1 de outubro de 2012
Ultima resposta 2 de out. de 2012
Respostas 10
Participantes 4