Comunidad de diseño web y desarrollo en internet online

Envio masivo emails con phpmailer y smtp gmail

Citar            
MensajeEscrito el 09 Mar 2015 08:23 am
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:

Código PHP :

<?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 = "[email protected]";
$mail->FromName = "Nombredelqueenvia";
$mail->addReplyTo('[email protected]', 'Nombredelqueenvia');
/*------------------------------------------------------------------------------------------*/
$host = 'smtp.gmail.com';
$username = '[email protected]';
$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 ??
Muchísimas gracias de antemano y un saludo: manyblue

Por manyblue

19 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 09 Mar 2015 04:56 pm
Si el problema es que no sabes como funciona el

While()

Hace algo mientras la expresión sea Verdadera
y

Do{ }While()
Hace algo una vez.
Evalúa si la expresión es verdadera y lo vuelve a hacer

Aqui alguien se molesto en explicarlo mejor.

http://www.desarrolloweb.com/articulos/567.php

Después de esto, verifica que tu array, cumpla con la condición ;)

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome
Citar            
MensajeEscrito el 10 Mar 2015 06:14 am
Ante todo muchas gracias por tu respuesta y perdona mi torpeza pero no termino de cogerlo.
En otros sitios me dicen que el código anterior está perfecto y que no entienden como hace todos los registros menos el primero, pero nadie me dice como hacerlo.
Ya habia visto el post de la url que me comentas y como te dije aún no lo cojo.
Un saludo

Por manyblue

19 de clabLevel



 

mozilla
Citar            
MensajeEscrito el 10 Mar 2015 06:42 am
Dejando el código como está:
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

Por manyblue

19 de clabLevel



 

mozilla

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.