murilo 0 Denunciar post Postado Fevereiro 11, 2009 Amigos, Estou com um problema com o PHPMailer que acredito que vocês possa me auxiliar. Tenho no meu banco uma tabela com os dados de algumas pessoas. Realizo um select pela data para verificar os aniversariantes do dia. Segue parte do código para que vocês possam entender: <? include "conexao.php"; include "config_phpmailer.php"; $hoje = date("m-d"); $mail->From = "nome@nome.com"; // Email do Remetente $mail->FromName = "nome"; // Nome do Remetente $sql = "SELECT nome, email FROM aluno WHERE date_format(nascimento, '%m-%d') = '$hoje'"; $res = mysql_query($sql); while ($qds = mysql_fetch_array($res)) { $nome = $qds["nome"]; $email = $qds["email"]; $msg = "mensagem de aniversario"; $mail->Subject = "Feliz Aniversario"; $mail->AddAddress($email,$nome); // Email e nome de quem receberá $mail->Body = $msg; if(!$mail->Send()){ echo "erro ao enviar mensagem para $email<br />"; echo "Mailer Error: " . $mail->ErrorInfo; return false; } else { echo "mensagem enviada com sucesso para $nomAluno<br />"; return true; } } include "fecha_conexao.php"; ?>A mensagem é enviada. O problema: supondo que existam 3 aniversariantes no dia Com o "return true;" abilitado a mensagem é enviada apenas para o primeiro contato; Caso seja comentado a linha com o código "return true;", a mensagem é enviada para todos, no entanto a 1ª mensagem será enviada para o 1º aniversariante, a 2ª msg será envaida para o 1º e 2º aniv e a 3ª msg será enviada para o 1º, 2º e 3º. Ou seja o primeiro receberá o número de mensagens igual ao número de aniversariantes do dia. Como posso resolver essa bronca? Conto com a ajuda de vocês, Fraternalmente, Compartilhar este post Link para o post Compartilhar em outros sites
Renato Siroma 2 Denunciar post Postado Fevereiro 11, 2009 Amigo não se usa return dentro de if e else; e Sim dentro de Functions; OBS: Não conheço phpMailer por isto; Me corrija se eu estiver errado; O E-mail é enviado 3 vezes para o primeiro porque você está colocando ele como Cópia; e não como remetente. Como você faz um While para pegar os e-mails e o retorno fica assim; 1 - jose@hotmail.com 2 - mario@hotmail.com 3 - dunha@hotmail.com Quando você anexar o jose@hotmail.com e depois anexar o mario@hotmail.com os que receberam a mensagens na segunda vez serão os dois; quando enviar a terceira vez; Irá para os 2 primeiros. e para o terceiro apenas uma vez; Compartilhar este post Link para o post Compartilhar em outros sites