PHP - Envio masivo boletines con phpmailer smtp gmail

   
Vista:

Envio masivo boletines con phpmailer smtp gmail

Publicado por Armando (14 intervenciones) el 09/03/2015 09:12:05
En la base de datos tengo tres suscriptores, yo mismo, con mis correos de yahoo, hotmail y gmail.
He conseguido que me envíe los boletines a mis correos de yahoo y hotmail pero no al de gmail, primero pongo el codigo y luego explico lo que creo me está pasandome.

Código:

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
<?php
// Viene del formulario - Idioma Boletin: 1 Español, 2 English, 3 Deutsch
$varIdiomaBoletin = "0";
if (isset($_GET["idioma"])) {
  $varIdiomaBoletin = $_GET["idioma"];
}
$varNombreBoletin = "0";
if (isset($_GET["nombre_boletin"])) {
  $varNombreBoletin = $_GET["nombre_boletin"];
}
// Viene del formulario - Idioma Suscripcion: 1 Español, 2 English, 3 Deutsch
$varIdiomaSuscripcion = "0";
if (isset($_GET["idioma_suscripcion"])) {
  $varIdiomaSuscripcion = $_GET["idioma_suscripcion"];
}
// Viene del formulario - $varEnviarSuscripcion = 1 - Enviar
$varEnviarSuscripcion = "0";
if (isset($_GET["enviar_suscripcion"])) {
  $varEnviarSuscripcion = $_GET["enviar_suscripcion"];
}
 
mysql_select_db($database_conex_db_teldetv, $conex_db_teldetv);
$query_ConsultaBoletines = "SELECT * FROM tbl_boletin WHERE tbl_boletin.idioma LIKE '%".$varIdiomaBoletin."%' AND tbl_boletin.idioma LIKE '%".$varNombreBoletin."%'";
$ConsultaBoletines = mysql_query($query_ConsultaBoletines, $conex_db_teldetv) or die(mysql_error());
$row_ConsultaBoletines = mysql_fetch_assoc($ConsultaBoletines);
$totalRows_ConsultaBoletines = mysql_num_rows($ConsultaBoletines);
 
mysql_select_db($database_conex_db_teldetv, $conex_db_teldetv);
$query_ConsultaSuscripciones = "SELECT * FROM tbl_suscripciones WHERE tbl_suscripciones.idioma_suscripcion LIKE '%".$varIdiomaSuscripcion."%' AND tbl_suscripciones.enviar_suscripcion LIKE '%".$varEnviarSuscripcion."%'";
$ConsultaSuscripciones = mysql_query($query_ConsultaSuscripciones, $conex_db_teldetv) or die(mysql_error());
$row_ConsultaSuscripciones = mysql_fetch_assoc($ConsultaSuscripciones);
$totalRows_ConsultaSuscripciones = mysql_num_rows($ConsultaSuscripciones);
 
while ($rowArray = mysql_fetch_array($ConsultaSuscripciones)) {
 
// Adquirimos las variables
$dia=date("d-m-Y");
$hora=date("H:i:s");
$asunto = $row_ConsultaBoletines['nombre_boletin'];
// Idioma Boletin: 1 Español, 2 English, 3 Deutsch
if ($row_ConsultaBoletines['idioma'] = 1):
$body = "Este boletín ha sido enviado el: $dia a las: $hora horas.<br /><br />".$row_ConsultaBoletines['codigo_boletin'];
elseif ($row_ConsultaBoletines['idioma'] = 2):
$body = "This newsletter has been sent: $dia at: $hora hours.<br /><br />".$row_ConsultaBoletines['codigo_boletin_in'];
elseif ($row_ConsultaBoletines['idioma'] = 3):
$body = "Dieser Newsletter wurde gesendet: $dia um: $hora Uhr.<br /><br />".$row_ConsultaBoletines['codigo_boletin_al'];
endif;
/*--------------------------------------------------------------------------------------------*/
require_once('../includes/PHPMailer/class.phpmailer.php');
require_once('../includes/PHPMailer/class.smtp.php');
/*------------------------------------------------------------------------------------------*/
$mail = new PHPMailer();
$mail->setLanguage('es');
/*------------------------------------------------------------------------------------------*/
$mail->From = "correodedondeseenvia@loquesea.es";
$mail->FromName = "Nombredelqueenvia";
$mail->addReplyTo('correodedondeseenvia@loquesea.es', 'Nombredelqueenvia');
/*------------------------------------------------------------------------------------------*/
$host = 'smtp.gmail.com';
$username = 'micorreogmail@gmail.com';
$password = 'mipassgmail';
$port = 587;
$secure = 'tls';
/*------------------------------------------------------------------------------------------*/
$mail->IsSMTP();
$mail->Host = $host;
$mail->SMTPAuth = true;
$mail->Username = $username;
$mail->Password = $password;
$mail->Port = $port;
$mail->SMTPSecure = $secure;
/*------------------------------------------------------------------------------------------------------------*/
$mail->addAddress($rowArray['email_suscripcion'], $rowArray['nombre_suscripcion']);
/*-----------------------------------------------------------------------------------------------------------*/
$mail->isHTML(true);
$mail->CharSet = 'utf-8';
$mail->setWordWrap = 70;
/*------------------------------------------------------------------------------------------*/
$mail->Subject = $asunto;
$mail->Body = $body;
//$mail->MsgHTML($body);
$mail->AltBody = $body;
/*------------------------------------------------------------------------------------------*/
$mail->Send();
if(!$mail->Send()) {
echo $mail->ErrorInfo;
echo "Error al enviar a: " . $rowArray["email_suscripcion"] . "<br>";
}
$mail->ClearAddresses();
}
?>


Pongo esto:

while ($rowArray = mysql_fetch_array($ConsultaSuscripciones)) {
echo $rowArray["email_suscripcion"];
}

justo despues del while y despues del primer corchete y no me lista los tres correos de los tres suscriptores, solo dos, a los dos que me envía el boletin, yahoo y hotmail. El primer registro de la la tabla de suscriptores es el de gmail, los dos siguientes son los de yahoo y hotmail. Se que puedo mandar diariamente a través de gmail unos 100 emails.

Hago esto justo al final de la consulta de suscripciones, despues de: $totalRows_ConsultaSuscripciones = mysql_num_rows($ConsultaSuscripciones);

do {
echo $row_ConsultaSuscripciones['email_suscripcion'];
} while ($row_ConsultaSuscripciones = mysql_fetch_assoc($ConsultaSuscripciones));

y si que me lista los tres correos de los tres suscriptores.
Creo que el problema está en el array.
Alguna sugerencia ??

Tengo con phpmailer y el smtp de gmail el envío del formulario de contacto y el email que se le envía al usuario para que cambie su password cuando lo olvida y los dos van como la seda

Muchísimas gracias de antemano y un saludo: manyblue
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

Envio masivo boletines con phpmailer smtp gmail

Publicado por xve (5523 intervenciones) el 09/03/2015 14:24:33
Hola Armando, prueba a comentar esta linea:
1
$row_ConsultaSuscripciones = mysql_fetch_assoc($ConsultaSuscripciones);

La manera que tienes el código es correcto...

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

Envio masivo boletines con phpmailer smtp gmail

Publicado por Armando armando12347@yahoo.com (14 intervenciones) el 10/03/2015 06:58:22
Si comento esta línea:
$row_ConsultaSuscripciones = mysql_fetch_assoc($ConsultaSuscripciones);
tendré que comentar el último corchete también. Lo he hecho y me da errores pues no hace el array.
Do{ }While()
Hace algo una vez.
Evalúa si la expresión es verdadera y lo vuelve a hacer
pero ando algo despiestado, aunque pienso que con el array deberia ir bien.
Saludos
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

Envio masivo boletines con phpmailer smtp gmail

Publicado por Armando (14 intervenciones) el 10/03/2015 07:45:21
Te digo más, he añadido un cuarto suscriptor con mi correo del dominio, ahora son cuatro los registros:
id_suscriptores = 2,3,4,5
Pues bien, me envia los boletines a los suscriptores 3,4,5 pero no al 2
??????
Saludos
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
Imágen de perfil de xve

Envio masivo boletines con phpmailer smtp gmail

Publicado por xve (5523 intervenciones) el 10/03/2015 10:05:30
Si es correcto...
Yo te indicaba de comentar esa linea en el código que nos has mostrado donde esta el while(){} no donde esta el do{}while()... es decir, en el primer código que nos has mostrado.

1
2
3
4
5
6
$query_ConsultaSuscripciones = "SELECT * FROM tbl_suscripciones WHERE tbl_suscripciones.idioma_suscripcion LIKE '%".$varIdiomaSuscripcion."%' AND tbl_suscripciones.enviar_suscripcion LIKE '%".$varEnviarSuscripcion."%'";
$ConsultaSuscripciones = mysql_query($query_ConsultaSuscripciones, $conex_db_teldetv) or die(mysql_error());
# $row_ConsultaSuscripciones = mysql_fetch_assoc($ConsultaSuscripciones);
$totalRows_ConsultaSuscripciones = mysql_num_rows($ConsultaSuscripciones);
while ($rowArray = mysql_fetch_array($ConsultaSuscripciones)) {
    ...
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

Envio masivo boletines con phpmailer smtp gmail

Publicado por Armando (14 intervenciones) el 10/03/2015 10:23:08
Perdona mi idiotez pero creo que en mi código no hay ningún do{}while().Lo que me han sugerido es que lo haga de esa forma pero no veo como o donde ponerlo.
En mi codigo solo uso while{} y fijate desde donde hasta donde, es decir, desde aquí:
while ($rowArray = mysql_fetch_array($ConsultaSuscripciones)) {
hasta el último corchete del código, antes del cierre php (?>).
En caso de que no consiga resoñver esto, que le den al primer registro jajajajajaja los que me importan son los que yo añada o los que añada el form de la web para suscripción de boletines.
Muchísimas gracias por tus respuestas y atención pues por mi parte es de agradecer.
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

Envio masivo boletines con phpmailer smtp gmail

Publicado por Armando (14 intervenciones) el 14/03/2015 07:21:59
Alguna sugerencia ??
Muchas gracias, un saludo: Armando
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