Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

murilo

Enviar mensagens de aniversário por e-mail

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.