Adore Posted January 24, 2016 at 04:58 PM Report Share #592446 Posted January 24, 2016 at 04:58 PM 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 More sharing options...
tuga74 Posted January 25, 2016 at 09:38 AM Report Share #592467 Posted January 25, 2016 at 09:38 AM 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 automaticamente o que gostas de ler e mostra os conteúdos que te interessam. Link to comment Share on other sites More sharing options...
tiago.f Posted January 25, 2016 at 10:44 AM Report Share #592468 Posted January 25, 2016 at 10:44 AM 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.... Link to comment Share on other sites More sharing options...
ruicosta.web Posted January 25, 2016 at 05:59 PM Report Share #592502 Posted January 25, 2016 at 05:59 PM 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now