Jump to content

Problema - Newsletter


Adore
 Share

Recommended Posts

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

Link to comment
Share on other sites

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.

Link to comment
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
 Share

×
×
  • 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.