Jump to content
Adore

Problema - Newsletter

Recommended Posts

Adore

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?

<?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

Share this post


Link to post
Share on other sites
tuga74

O codigo que envia o email deveria estar dentro do while, para cada registo na db tens de enviar um email


http://www.nova.news

Nova aprende automáticamente o que gostas de ler e mostra os conteúdos que te interessam.

Share this post


Link to post
Share on other sites
tiago.f

Posso também sugerir, caso o conteúdo do email seja igual para todos os destinatários, não enviares 1 email por cada destinatário, mas pores uma série deles (100 ?) no campo BCC e enviar desta maneira....

Share this post


Link to post
Share on other sites
ruicosta.web

Este bloco:

$mail=new PHPMailer();
$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
$mail->SetFrom('remetente@gmail.com','Teste');
$mail->Subject=$subject;

Deverá estar fora do ciclo (antes deste começar) já que é um bloco de código comum ao envio da newsletter.

Depois há vários pontos a considerar no envio de uma newsletter:

O dominio tem configurado a Sender Policy Framework (SPF) record ?

Ao enviar emails em massa, a partir de uma conta GMAIL leva em conta os limites da Google para esta situação: https://support.google.com/a/answer/166852?hl=pt

Enviar 500, 1000 emails seguidos é o primeiro caminho para veres o IP do servidor numa blacklist, impedindo-te de enviares emails.

Estuda primeiro regras básicas para enviares emails em massa se não queres ficar com um "gosto amargo" nerssa tua primeira experiência.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.