elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Bucle PHP (send mail)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bucle PHP (send mail)  (Leído 3,623 veces)
rogamer

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Bucle PHP (send mail)
« en: 19 Diciembre 2013, 14:14 pm »

Hola muy buenas, os comento necesito ayuda por que he creado una pagina para enviar correos utilizando PHPMailer y el editor CKEDITOR

Pues bien, cuando envió el correo a un destinatario llega un único correo pero cuando pongo dos:
Al  primero llega 2 correos y a la segundo 1
Cuando pongo 3 destinatarios:
Al primero le llega 3 correos al segundo 2 y al tercero 1

Y así sucesivamente, la verdad es que me estoy volviendo un tanto loco, el código es el siguiente:

Código:
<head>
<meta charset="utf-8">
<script src="ckeditor.js"></script>
<link href="sample.css" rel="stylesheet">
    <?php
header('Content-Type: text/html; charset=UTF-8');
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</head>
<body>
<?php
error_reporting("E_NOTICE");
$resultado = "";
if (isset($_POST["destinatarios"]))
{
$destinatarios = $_POST["destinatarios"];
$destinatarios = explode(", ", $destinatarios);
$email = $_POST["email"];
$mensaje = $_POST["mensaje"];
$adjunto = $_FILES["adjunto"];
require("class.phpmailer.php");
include("class.smtp.php");
$mail = new PHPMailer();
foreach($destinatarios as $destinatario)
{
$mailer = new PHPMailer();
$mailer->IsSMTP();
$mailer->Host = 'servidor.smtp';
$mailer->SMTPAuth = TRUE;
$mailer->Username = 'usuario.smtp';
$mailer->Password = 'Contraseña SMTP';
$mail->FromName = "Nombre"; //Nombre del remitente
$mail->From = "Correo"; // Correo del remitente (Para mostrar)
$mail->Subject = "Asunto"; //Asunto del email
$mail->AddAddress(trim($destinatario)); //Destinatario
$mail->IsHTML(true); // El correo se envía como HTML
$mail->MsgHTML($mensaje); //Mensaje en HTML
//Si el archivo es de tamaño mayor que 0
if ($adjunto["size"] > 0)
{
$mail->AddAttachment($adjunto["tmp_name"], $adjunto["name"]);//adjuntar un archivo al mensaje
}
if($mail->Send())
{
$resultado .= "Enhorabuena el mensaje ha sido enviado con éxito a $destinatario
";
}

else
{
$resultado .= "Lo siento ha habido un error al enviar el mensaje a $destinatario
";
}
}
}
?>
<h3>Envio Newsletter</h3>
<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>" enctype="multipart/form-data" accept-charset="ISO-8859-1">
<table border="0">
<tr>
<td>Archivo:</td>
<td><input type="file" name="adjunto"></td>
</tr>
<tr>
<td>Destinatarios:</td>
<td><input type="text" name="destinatarios" size="100"><br />*Introduzca todos los destinatarios separados por una <strong>coma</strong>, ejemplo: primer-email@correo.com<strong>,</strong> segundo-email@correo.com</td><br />
</tr>
<tr>
<td>Mensaje:</td>
<td><textarea cols="80" id="editor1" name="mensaje" rows="10" lang="es" >
</textarea></td>

<script>

// This call can be placed at any point after the
// <textarea>, or inside a <head><script> in a
// window.onload event handler.

// Replace the <textarea id="editor"> with an CKEditor
// instance, using default configurations.

CKEDITOR.replace( 'editor1' );

</script>
<tr>
<tr>
<td></td><td><input type="submit" value="Enviar"></td>
</tr>
</table>
<b><?php echo $resultado; ?></b>
</form>
</body>


Os lo agradezco por adelantado, no encuentro ninguna solución.


« Última modificación: 19 Diciembre 2013, 14:17 pm por rogamer » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Bucle PHP (send mail)
« Respuesta #1 en: 19 Diciembre 2013, 14:49 pm »

No hagas el bucle..PHPMailer y mail() ya saben diferenciar múltiples destinatarios cuando son indicados con coma.. osease el bucle ahí es totalmente inútil.

En PHPMailer para añadir multipes destinatarios hay que llamar AddAddress

Código
  1. $mail->AddAddress(destino);


Saludos


« Última modificación: 19 Diciembre 2013, 14:55 pm por @drvy » En línea

rogamer

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Bucle PHP (send mail)
« Respuesta #2 en: 19 Diciembre 2013, 14:58 pm »

No hagas el bucle..PHPMailer y mail() ya saben diferenciar múltiples destinatarios cuando son indicados con coma.. osease el bucle ahí es totalmente inútil.

En PHPMailer para añadir multipes destinatarios hay que llamar AddAddress

Código
  1. $mail->AddAddress(destino);


Saludos
Entonces he de quitar lo relacionado con $destinatarios ¿no? pero si lo quito afecta al formulario que no?

Código
  1. $mail->AddAddress(destino);
se encuentra en el codigo que he puesto pero desconocia que si lo separas por comas el ya realiza el resto
« Última modificación: 19 Diciembre 2013, 15:02 pm por rogamer » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Bucle PHP (send mail)
« Respuesta #3 en: 19 Diciembre 2013, 15:08 pm »

No lo de que lo reconozca no es cierto.. pense que seria tan listo como para hacerlo ya que la funcion nativa de php (mail) si lo hace pero bueno..

En fin que el codigo quedaria mas o menos asi:
Código
  1. error_reporting("E_NOTICE");
  2. $resultado = "";
  3. if (isset($_POST["destinatarios"]))
  4. {
  5. $destinatarios = $_POST["destinatarios"];
  6. $destinatarios = explode(", ", $destinatarios);
  7. $email = $_POST["email"];
  8. $mensaje = $_POST["mensaje"];
  9. $adjunto = $_FILES["adjunto"];
  10. require("class.phpmailer.php");
  11. include("class.smtp.php");
  12. $mail = new PHPMailer();
  13.  
  14. $mailer = new PHPMailer();
  15. $mailer->IsSMTP();
  16. $mailer->Host = 'servidor.smtp';
  17. $mailer->SMTPAuth = TRUE;
  18. $mailer->Username = 'usuario.smtp';
  19. $mailer->Password = 'Contraseña SMTP';
  20. $mail->FromName = "Nombre"; //Nombre del remitente
  21. $mail->From = "Correo"; // Correo del remitente (Para mostrar)
  22. $mail->Subject = "Asunto"; //Asunto del email
  23. foreach($destinatarios as $destinatario){
  24.   $mail->AddAddress(trim($destinatario)); //Destinatario
  25. }
  26. $mail->IsHTML(true); // El correo se envía como HTML
  27. $mail->MsgHTML($mensaje); //Mensaje en HTML
  28. //Si el archivo es de tamaño mayor que 0
  29. if ($adjunto["size"] > 0)
  30. {
  31. $mail->AddAttachment($adjunto["tmp_name"], $adjunto["name"]);//adjuntar un archivo al mensaje
  32. }
  33. if($mail->Send())
  34. {
  35. $resultado .= "Enhorabuena el mensaje ha sido enviado con éxito a $destinatario
  36. ";
  37. }
  38.  
  39. else
  40. {
  41. $resultado .= "Lo siento ha habido un error al enviar el mensaje a $destinatario
  42. ";
  43. }
  44. }
  45. }

Saludos
En línea

rogamer

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Bucle PHP (send mail)
« Respuesta #4 en: 19 Diciembre 2013, 15:20 pm »

Perfecto funcionando, graciass.

Solo tengo una duda mas, si quiero que el AddAddress sea oculto lo sustituyo por el addBCC y listo no?
« Última modificación: 19 Diciembre 2013, 15:29 pm por rogamer » En línea

Kami

Desconectado Desconectado

Mensajes: 252


Be happy!


Ver Perfil
Re: Bucle PHP (send mail)
« Respuesta #5 en: 19 Diciembre 2013, 20:19 pm »

Creo recordar que si usas el AddAddress sale a todos los destinatarios que se han enviado ¿No?

Y esto puede ser tomado por SPAM, incluso puede ser ilegal por la LOPD.
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Bucle PHP (send mail)
« Respuesta #6 en: 19 Diciembre 2013, 20:28 pm »

Citar
Solo tengo una duda mas, si quiero que el AddAddress sea oculto lo sustituyo por el addBCC y listo no?

Exacto.

Citar
Y esto puede ser tomado por SPAM, incluso puede ser ilegal por la LOPD.

Depende de que uso le vas a dar. Por ejemplo yo estoy en muchos grupos donde se envían directamente sin BBC.. pero como son grupos privados no hay problema. En fin, todo se reduce al uso que se le va a dar.

Saludos
En línea

rogamer

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Bucle PHP (send mail)
« Respuesta #7 en: 21 Diciembre 2013, 11:31 am »

El uso que se le dará sera envió de boletines (publicidad), a nivel legal esta prohibido que se vea las direcciones debido a la LOPD por eso quería asegurarme, no quiero tener problemas.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda (Parar bucle con dato boolean) [bucle while]
Java
Dem0ny 5 18,296 Último mensaje 17 Diciembre 2008, 17:43 pm
por Dem0ny
mail(), error raro al intentar enviar mail !
PHP
Diabliyo 4 4,647 Último mensaje 25 Enero 2010, 06:04 am
por Diabliyo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines