Forum Pplware

Versão Completa: PHP - Problema - Newsletter
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Boas malta
Preciso de ajuda
Estou a criar um site para uma loja online, e pretendo enviar uma newsletter a cada cliente, sem que seja necessário colocar manualmente o endereço de e-mail de cada cliente. O objectivo será fazer com que o sistema vá buscar o mail automaticamente à BD já existente. O problema aqui, é que no código criado, só está a enviar o mail/newsletter para o último cliente, o último registo da BD! Alguém me consegue ajudar?

Código:
<?php

require('phpmailer/PHPMailerAutoload.php'); // Ligação com a base de dados MySQL
define('BD_USER', 'root');
define('BD_PASS', '');
define('BD_NAME', 'nome_da_bd');
mysql_connect('127.0.0.1', BD_USER, BD_PASS);
mysql_select_db(BD_NAME); // Define busca a ser realizada no MySQL
$query= 'SELECT username, nome, email FROM utilizadores;';
$resultado = mysql_query($query);
while ($linha = mysql_fetch_array($resultado, MYSQL_BOTH)) { // Seleciona os campos, para cada linha
$nome=$linha['nome'];
$username=$linha['username'];
$email=$linha['email']; // Variáveis com assunto e mensagem
$subject = "\"Newsletter\"";
$mensagem = " Caro(a) $nome, aqui está a habitual newsletter, Atenciosamente, Garden Corporation Online"; // Inicia a classe PHPMailer
$mail=new PHPMailer(); // Define os dados do servidor e tipo de ligação
}

$mail->SMTPAuth=true; // utilizar autenticação SMTP no caso de utilizar o GMAIL
$mail->Port=465;
$mail->SMTPSecure = "ssl";
$mail->Host='smtp.gmail.com';
$mail->Username='remetente'; // nome de utilizador
$mail->Password='password'; // password de acesso ao mail
// Define o remetente
$mail->SetFrom('remetente@gmail.com','Teste');
// Define os destinatário(s)
$mail->AddAddress($email,$nome.' '.$username);
$mail->Subject=$subject;
$mail->Body=$mensagem;
$imprime=$nome." ".$email."
";
// Apresenta o resultado do pedido
echo $imprime;
if($mail->Send()){// Envia o e-mail
echo 'E-mail enviado com sucesso!';
}else{
echo 'Erro ao enviar e-mail: '.$mail->ErrorInfo;
}
sleep(10);
?>

Obrigado
É porque apartir de $mail->SMTPAuth=true; o codigo está fora do "while" ou seja assim que o while acaba tens apenas definido o ultimo registro.
Move a chaveta depois de $mail=new PHPMailer(); para depois de sleep(10);
Obrigado pela ajuda, mas acabei por conseguir! Estava a fechar o ciclo demasiado cedo!

Abraço e obrigado
Boas.

Como fizeste a parte de editar/criar a newsletter?

Ou seja, tens uma input_box onde escrever o email a enviar? Dá para inserir imagens, etc? Era isso que eu precisava.
Isso com algumas centenas de emails vai trazer-te problemas sérios de bloqueio de IP.

Estuda sobre o envio de emails em massa.
URL's de Referência