PHP - Bucle PHP (send mail)

 
Vista:

Bucle PHP (send mail)

Publicado por Juan (1 intervención) el 19/12/2013 14:31:56
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Bucle PHP (send mail)

Publicado por xve (6935 intervenciones) el 19/12/2013 23:18:36
Hola Juan, lo que haces con tu código, es ir llenando el array de direcciones donde enviar... tienes que vaciar el array para cada iteración del bucle con:
1
$mail->ClearAddresses()
De esta manera, cada vez que añadas una dirección con:
1
$mail->AddAddress(trim($destinatario));
Sera la única a la que envié.

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar