Ir para conteúdo

POWERED BY:

Arquivado

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

Felipe Sobral

[Resolvido] Enviar múltiplos e-mails em PHP

Recommended Posts

Pessoal, a minha questão é a seguinte:

 

Tenho um script para gerar faturas da assinatura de um portal que estou desenvolvendo.

No ato em que as faturas são geradas, também deve ser enviado um e-mail ao cliente avisando que ela já está disponível para ser paga.

 

O problema é que com o PHPMailer eu não consigo enviar mais de um e-mail, sendo que o envio de e-mails é realizado através de um loop. E quando uso a função mail, no Hotmail, os e-mails são enviados diretamente para lixeira.

 

Qual seria a alternativa para resolvê-lo?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce pode envialos pelo php mailer em uma estrutura de repetição

 

não sei como você está pegando os emails

mas eu ja fiz um sistema onde em um único campo se digitava os emails separados por vírgula

 

ae na outra página ficava assim

 

<?php

include ("conectar_db.php"); // Conectando o banco de dados

 

require("class.phpmailer.php");// PHP Mailer

 

if(isset($_POST["emails"])) {

$array_email = explode(",",$_POST["emails"]; // separa os emails pelas vírgulas em uma array

}

 

foreach($array_email as $e) {

// FUNÇÃO DO PHP MAILER AQUI

$mail = new PHPMailer();

$mail->IsMail();

 

$mail->AddAddress($e); // O $e representa o vetor $array_email

$mail->Subject = "Test 1";

$mail->Body = "Test 1 of PHPMailer.";

 

$mail->Send;

 

}

?>

 

pelo menos aqui tinha funcionado!!

não cheguei a testar esse script não

mas imagino que esteja funcionando

 

e fique a vontade para implementar!! =DD

espero que tenha ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, a minha questão é a seguinte:

 

Tenho um script para gerar faturas da assinatura de um portal que estou desenvolvendo.

No ato em que as faturas são geradas, também deve ser enviado um e-mail ao cliente avisando que ela já está disponível para ser paga.

 

O problema é que com o PHPMailer eu não consigo enviar mais de um e-mail, sendo que o envio de e-mails é realizado através de um loop. E quando uso a função mail, no Hotmail, os e-mails são enviados diretamente para lixeira.

 

Qual seria a alternativa para resolvê-lo?

 

Abraços

 

sim, pois o hotmail so recebe email autenticado...posta o seu codigo pra sabermos onde você esta errando...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código é imenso... estou utilizado o que o Tacno indicou... só mudam poucas coisas, mas a essência é a mesma.

 

voce pode envialos pelo php mailer em uma estrutura de repetição

 

não sei como você está pegando os emails

mas eu ja fiz um sistema onde em um único campo se digitava os emails separados por vírgula

 

ae na outra página ficava assim

 

<?php

include ("conectar_db.php"); // Conectando o banco de dados

 

require("class.phpmailer.php");// PHP Mailer

 

if(isset($_POST["emails"])) {

$array_email = explode(",",$_POST["emails"]; // separa os emails pelas vírgulas em uma array

}

 

foreach($array_email as $e) {

// FUNÇÃO DO PHP MAILER AQUI

$mail = new PHPMailer();

$mail->IsMail();

 

$mail->AddAddress($e); // O $e representa o vetor $array_email

$mail->Subject = "Test 1";

$mail->Body = "Test 1 of PHPMailer.";

 

$mail->Send;

 

}

?>

 

pelo menos aqui tinha funcionado!!

não cheguei a testar esse script não

mas imagino que esteja funcionando

 

e fique a vontade para implementar!! =DD

espero que tenha ajudado!

 

 

Como os emails devem estar dispostos na variável "$_POST["emails"]"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como os emails devem estar dispostos na variável "$_POST["emails"]"?

 

Com vírgulas. O explode separará os resultados diante das vírgulas. Exemplo:

<?php

$lista = "guilherme@terra.com.br, teste@teste.com, a@a.com";
$return = explode( ', ', $lista );
print_r( $return );

Saída:

Array
(
   [0] => guilherme@terra.com.br
   [1] => teste@teste.com
   [2] => a@a.com
)

Então, para cada valor do Array, através do foreach, ele enviará um e-mail.

 

E lembre-se que para o seu e-mail não cair na caixa de SPAM, este deve ser autenticado. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com vírgulas. O explode separará os resultados diante das vírgulas. Exemplo:

<?php

$lista = "guilherme@terra.com.br, teste@teste.com, a@a.com";
$return = explode( ', ', $lista );
print_r( $return );

Saída:

Array
(
   [0] => guilherme@terra.com.br
   [1] => teste@teste.com
   [2] => a@a.com
)

Então, para cada valor do Array, através do foreach, ele enviará um e-mail.

 

E lembre-se que para o seu e-mail não cair na caixa de SPAM, este deve ser autenticado. :thumbsup:

 

 

Obrigado Guilherme, vou testar e confirmo aqui!

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilizando array, o primeiro e-mail é enviado, no segundo ocorreu um erro.

Segue código:

 

<?php 	
$obj->set("sql","SELECT * FROM tabela WHERE campo == 'x'");
$query = $obj->query();
$data  = mysql_fetch_array($query);
$lines = mysql_num_rows($query);

for($cont=1;$cont<=$lines;$cont++){

$array_email = $array_email.$data['email'].",";
$mensagem[$data["email"]] = "teste para > ".$data['nome']." ";

$data = mysql_fetch_array($query);

}

include("email.php");

$assunto  = "Nova Fatura";
$array_email = explode(",",$array_email); // separa os emails pelas vírgulas em uma array

foreach($array_email as $e) {
enviaEmail2($nome, $e, $mensagem[$e], $assunto);
}
?>

 

<?php
function enviaEmail2($nome, $email, $mensagem, $assunto) {
require("phpmailer/class.phpmailer.php");

$mail = new PHPMailer();
$mail->IsSMTP(); //ENVIAR VIA SMTP
$mail->Host = "smtp.dominio.com.br"; 
$mail->SMTPAuth = true; 
$mail->Username = "autentica@dominio.com.br"; 
$mail->Password = "senha"; 
$mail->SetFrom("autentica@dominio.com.br","Nome"); 
$mail->AddAddress("$email"); 
//$mail->AddCC("site@dominio.com.br","$nome");
$mail->AddCustomHeader('Return-path:autentica@dominio.com.br');
$mail->AddReplyTo("cadastro@dominio.com.br","Nome");
$mail->IsHTML(true); 
$mail->Subject = "$assunto";
$mail->Body = "
<html>
<body>
$mensagem
</body>
</html>"; //CONTEÚDO DA MENSAGEM
if(!$mail->Send())
{
	?>
	<script>alert("Houve um problema no envio da sua mensagem\nPor favor, Tente novamente.");</script>
	<?php
exit;
}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

no phpmailer usa o modo debug em 2

 

$mail->DEBUG = 2; //nao lembro o nome correto da variavel, verificar documentacao

 

ele vai t mostrar o problema, mas de cara eu ja vi, você da o require toda vez q entra no loop, ae vai da erro mesmo...o require/include so pode ser dado num mesmo arquivo/classe uma unica vez, se tentar o fazer mais de uma vez, vai dar erro de funca/classe redeclarada...

 

no phpmailer usa o modo debug em 2

 

$mail->DEBUG = 2; //nao lembro o nome correto da variavel, verificar documentacao

 

ele vai t mostrar o problema, mas de cara eu ja vi, você da o require toda vez q entra no loop, ae vai da erro mesmo...o require/include so pode ser dado num mesmo arquivo/classe uma unica vez, se tentar o fazer mais de uma vez, vai dar erro de funca/classe redeclarada...

Era isso mesmo Igor! Resolvido, valeu!

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.