Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá.
Seguinte. Preciso enviar múltiplos e-mails para os usuários do meu site, porém necessito de dados dinâmicos (referentes a cada usuário) em cada e-mail...
Ou seja, tenho 1000 clientes. Preciso mandar 1.000 e-mails diferentes, um para cada cliente com dados referentes a ele (contidos no meu banco mysql).
Estou um pouco perdido. Comecei a montar e a editar o código que o meu servidor me forneceu "USANDO O PEAR MAIL".
Vou colar aqui:
<?php
// Make a MySQL Connection
$query = "SELECT * FROM clientes";
$result = mysql_query($query) or die(mysql_error());
while($array = mysql_fetch_array($result)){
$id[] = $array[0];
$email[] = $array[1];
$nome[] = $array[2];
}
$emails_separados = implode(",", $email);
?>Se eu der um print_r($id); ele vai mostrar todos os ids do meu banco.
Se eu dou um print_r($nome);
Array ( [0] => Felipe [1] => Fábio )
Então isso tá funfando.
Agora com o código para enviar o e-mail:
<?php
##---------------------------------------------------
## Envio de Emails pelo SMTP Autênticado usando PEAR
##---------------------------------------------------
# Mais detalhes sobre o PEAR:
# [http://pear.php.net/](http://pear.php.net/)
#
# Mais detalhes sobre o PEAR Mail:
# [http://pear.php.net/](http://pear.php.net/)manual/en/package.mail.mail-mime.php
##---------------------------------------------------
# Faz o include do PEAR Mail e do Mime.
include ("Mail.php");
include ("Mail/mime.php");
# E-mail de destino. Caso seja mais de um destino, crie um array de e-mails.
# *OBRIGATÓRIO*
$recipients = $emails_separados; //AQUI TÁ PEGANDO O IMPLODE COM VÍRGULAS email1@email1.com,email2@email2.com ...
# Cabeçalho do e-mail.
$headers =
array (
'From' => 'de@de.com.br', # O 'From' é *OBRIGATÓRIO*.
'To' => 'para@para.com.br',
'Subject' => 'Assunto do e-mail'
);
# Utilize esta opção caso deseje definir o e-mail de resposta
$headers['Reply-To'] = 'resposta@resposta.com';
# Utilize esta opção caso deseje definir o e-mail de retorno em caso de erro de envio
# $headers['Errors-To'] = 'EMailDeRerornoDeERRO@DominioDeretornoDeErro.com';
# Utilize esta opção caso deseje definir a prioridade do e-mail
# $headers['X-Priority'] = '3'; # 1 UrgentMessage, 3 Normal
# Define o tipo de final de linha.
$crlf = "\r\n";
# Corpo da Mensagem e texto e em HTML
$html = "Olá {$nome}. Seu código de usuário é {$id} e o seu e-mail é: {$email}"; // ESSA LINHA QUE É O BICHO. ELA QUE PRECISA TER OS DADOS REFERENTES A CADA USUÁRIO DO BANCO DE DADOS
# Instancia a classe Mail_mime
$mime = new Mail_mime($crlf);
# Coloca o HTML no email
$mime->setHTMLBody($html);
## $mime->addAttachment('/home/suapastahome/www/seuarquivo.txt');
# Procesa todas as informações.
$body = $mime->get();
$headers = $mime->headers($headers);
# Parâmetros para o SMTP. *OBRIGATÓRIO*
$params =
array (
'auth' => true, # Define que o SMTP requer autenticação.
'host' => 'smtp.meuserver.com.br', # Servidor SMTP
'username' => 'user', # Usuário do SMTP
'password' => 'senha' # Senha do seu MailBox.
);
# Define o método de envio
$mail_object =& Mail::factory('smtp', $params);
# Envia o email. Se não ocorrer erro, retorna TRUE caso contrário, retorna um
# objeto PEAR_Error. Para ler a mensagem de erro, use o método 'getMessage()'.
$result = $mail_object->send($emails_separados, $headers, $body);
if (PEAR::IsError($result))
{
echo "ERRO ao tentar enviar o email. (" . $result->getMessage(). ")";
}
Como viram acima, o problema é como eu vou fazer pra criar múltiplos e-mails, visto que neste código:
$recipients = $emails_separados;
ele tá mandando uma cópia do e-mail para todos os clientes do array. E o corpo do e-mail propriamente dito
# Corpo da Mensagem e texto e em HTML
$html = "Olá {$nome}. Seu código de usuário é {$id} e o seu e-mail é: {$email}"; // ESSA LINHA QUE É O BICHO. ELA QUE PRECISA TER OS DADOS REFERENTES A CADA USUÁRIO DO BANCO DE DADOS.
Como eu faço isso?
Fico no aguardo de qualquer ajuda.
Um abraço,
FELIPE DELGADO
Carregando comentários...