Foros del Web » Programando para Internet » PHP »

Contar envio de email

Estas en el tema de Contar envio de email en el foro de PHP en Foros del Web. Holas: He estado practicando con envios de email masivos. Todo ha ido de maravillas. El punto es que quiero contar la cantidad de registros email ...
  #1 (permalink)  
Antiguo 28/07/2003, 20:23
 
Fecha de Ingreso: agosto-2001
Ubicación: Santiago de Chile
Mensajes: 96
Antigüedad: 16 años, 3 meses
Puntos: 0
Contar envio de email

Holas:

He estado practicando con envios de email masivos. Todo ha ido de maravillas. El punto es que quiero contar la cantidad de registros email que mando para no reventar el servidor smtp.
Me gustaría crear una función con la cual decir. Al contar 50 mail, no sigas mandando. espera 30 seg. Luego continua el proceso. hasta que no encuentre mas registro. Es decir al registro 50 stop 30 seg. al regisatro 100 stop 30 seg. al 150 ect.. dependiendo de cuantos registros tenga.


Les agradecería nuevamente su ayuda...
__________________
maguak
  #2 (permalink)  
Antiguo 28/07/2003, 20:29
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
esta buena esa duda

Me sentare un rato en mi pc para ayudarte, derrepente sea rapido el desarrollo.

Apenas tenga algo listo te lo escribo aqui.

No dudes en que respondere lo mas rapido posible.
  #3 (permalink)  
Antiguo 28/07/2003, 20:30
 
Fecha de Ingreso: agosto-2001
Ubicación: Santiago de Chile
Mensajes: 96
Antigüedad: 16 años, 3 meses
Puntos: 0
Super bien, gracias...

Yo llevo varios días en la misma

__________________
maguak
  #4 (permalink)  
Antiguo 29/07/2003, 13:37
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Listo al fin esta terminado

Saludos,

Dejame tu email aqui para poder enviarte los codigos, estos codigos estan formados por dos paginas.php ok.

No puedo escribirlo aqui porque es muy extenso para este foro quizas tome una pagina bien larga jeje y no se si aqui se puede poner eso tan extenso.

Despues que te lo envio comentamos lo que te envie, de todas formas ira lo mas detallado posible.

Me despido.
  #5 (permalink)  
Antiguo 29/07/2003, 15:01
 
Fecha de Ingreso: agosto-2001
Ubicación: Santiago de Chile
Mensajes: 96
Antigüedad: 16 años, 3 meses
Puntos: 0
Que biennnnnnnnnn.....


[email protected]


Gracias.......
__________________
maguak
  #6 (permalink)  
Antiguo 29/07/2003, 15:24
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Saludos,

Aqui te mando los dos archivos que hacen que el asunto ese que pediste en el foro funcione, te aseguro que te funcionara ya que me tomo un tiempo desarrollarlo de manera eficiente.

Tienes que tener cosas claras como:
1- El tiempo lo das en minutos de 1 a 20 minutos maximo de espera.
2- El archivo reloj.php lo unico que le debes editar es la variable $cantidadm que es donde le pones la cantidad de minutos que quieresa que espere y haga el otro envio.
3- Como es asunto de tiempo procura que el servidor de php tenga la opcion de que el codigo php se pueda ejecutar por largo tiempo asi no te tira error de que el script php sobrepaso el limite permitido por el sistema.
4- Tienes dos archivos hay, el prueba.php y el de reloj.php, si les cambias los nombres debes cambiar tambien la redirecciones ok hechale ojo a eso, solo las redirecciones, ten en cuenta que la redireccion en javascript ponla completa con http: y todo eso.
5- la redireccion de prueba.php la cambias solamente si le cambias el nombre a el archivo reloj, sino dejalo asi mismo.
6- El sistema envia los emails recojiendolo de una base de datos ok

Bueno cualquier otra duda ponla en el foro y te respondere.

Me despido,
Marco A. Castillo
  #7 (permalink)  
Antiguo 29/07/2003, 21:44
 
Fecha de Ingreso: agosto-2001
Ubicación: Santiago de Chile
Mensajes: 96
Antigüedad: 16 años, 3 meses
Puntos: 0
Funcionó muy bien...

Creo que este script es una joya.

Gracias..............
__________________
maguak
  #8 (permalink)  
Antiguo 29/07/2003, 21:56
 
Fecha de Ingreso: agosto-2001
Ubicación: Santiago de Chile
Mensajes: 96
Antigüedad: 16 años, 3 meses
Puntos: 0
Errorrrrrrrr....
No me había percatado de un tremendo problema, al refrescar la página no vuelve a insertar las variables de $titulo, $cuerpo, $nombre que son el $mensaje me salen desde el 2 correo sin variables

Tendría que crear una query en la página relog? para llamar a esas variables denuevo?, pero como mando personalisados los nombre de los destinatario?....

Upsss
__________________
maguak
  #9 (permalink)  
Antiguo 30/07/2003, 09:58
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Ok ok que no pase de un pequeño problemita a un gran susto jeje,

Dejame ver si te entiendo, en realidad tu tienes tres paginas verdad:
La primera tu metes el titulo , mensaje, cuerpo, que luego la uniras en una sola variable que se llamara mensaje, y esta es la que tu muestras en la funcion mail.

Bueno dejame ver algo aqui.

Busca este codigo y cambia el header por este nuevo en la pagina que se llama prueba.php que te envie..

if ( $reg1 != $total ) {
header("location: reloj.php?pag=".$pag."&titulo=".$titulo."&cuerpo=" .$cuerpo."&nombre=".$nombre);
}

En el archivo reloj.php busca estas lineas y cambia el document.location por este que te mando aqui.

if (cadenareloj >= meta) {
spanreloj.innerHTML = "<font size='7' face='verdana' ><b>Tiempo Agotado</b></font>";
document.location = "http://localhost/gaminc/prueba.php?pag=<?php echo $pag?>&titulo=<?php echo $titulo?>&cuerpo=<?php echo $cuerpo?>&nombre=<?php echo $nombre?>";
}

Verifica eso y me avisas.
  #10 (permalink)  
Antiguo 30/07/2003, 10:01
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 14 años, 9 meses
Puntos: 1
y por que no lo dejas por aqui para todos?¿
vamos si quieres

Un Saludo
  #11 (permalink)  
Antiguo 30/07/2003, 10:02
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Otra cosa que creo no te comente:

La variable $tampag le das el valor de la cantidad de emails que quieras enviar para que el script luego enviar esos se redireccione y descance los minutos que quieras ok.

Me avisas cualquier cosa.
  #12 (permalink)  
Antiguo 30/07/2003, 10:03
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
DINASEN saludos,

El script es muy extenso, tratare de subirlo a una pagina para compartirlo con todos y pondre el link aqui.

Avisare cuando lo tenga en mi servidor.
  #13 (permalink)  
Antiguo 30/07/2003, 10:10
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 14 años, 9 meses
Puntos: 1
ok muchas gracias

Un Saludo
  #14 (permalink)  
Antiguo 30/07/2003, 10:14
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Mensaje SCRIPT: Darle descanso a los envios de email masivo.( Los descanso son en minutos)

#Dar descanso a una aplicacion de envio de email masivo que
#esta formado por dos secciones prueba.php y reloj.php.
# Desarrollado por Marco A. Castillo - [email protected]

#Cualquier detalle sobre este email mandenmelo a mi email
#cualquier actualizacion tambien jeje para tenerla.

#Comenzamos con el primer archivo llamado. prueba.php
#este nombre es el que puse para referirme a el en toda esta informacion y detalles.

<?php
#Este codigo es para no tener problema con la funcion header()
ob_start();
?>
<?php
#cambia estas opciones con la informacion tuya, de forma correcta
#Tu host, tu user, tu pass y la base de datos que quieres conectar
$host = "localhost";
$user = "root";
$pass = "password";
$data = "base_de_datos";
#aqui inicia la funcion que conecta a la base de datos
function Conectarse($host,$user,$pass,$data)
{
if (!($link=mysql_connect($host,$user,$pass)))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db($data,$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
#coneccion y envio de los emails
$link = Conectarse($host,$user,$pass,$data);
if (!isset($pag)) $pag = 1; // Por defecto, pagina 1

#Aqui defininimos la cantidad de email que quieres enviar para luego redireccionar y descansar.
$tampag = 1;
$reg1 = ($pag-1) * $tampag;

#aqui en este sql cambia la tabla a conectarse y la sentencia del sql si quieres.
$sql = ("select * from usuarios_foros");
$result = mysql_query($sql, $link);
$total = mysql_num_rows($result);
for ($i=$reg1; $i<min($reg1+$tampag, $total); $i++) {
mysql_data_seek($result, $i);
$row = mysql_fetch_array($result);
# Aqui va inicia el envio de email
mail($row["email"],$asunto,$mensaje,$de);
}
$pag = $pag + 1;

#Aqui detecto si ya todo se envio, si no es asi redirecciona a reloj.php
#si ya termino de enviar entonces te manda un mensaje diciendo que acabo.
if ( $i != $total ) {
header("location: reloj.php?pag=".$pag);
}
elseif ($reg1 != $total) {
header("location: reloj.php?pag=".$pag);
}
else {
echo "<center><font size=5 face=tahoma><b>Todos los registros fueron enviados</b><font></center>";
}
?>
<?php
#Este codigo es para no tener problema con la funcion header()
ob_end_flush();
?>

Última edición por dwaks; 30/07/2003 a las 16:02
  #15 (permalink)  
Antiguo 30/07/2003, 10:16
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Mensaje Segunda seccion de el mensaje anterior.

#Aqui inicia el segundo archivo de este sistema que le llamo reloj.php
#por este nombre me refiero a el en todas partes.

<?php
#Aqui inicia la suma de minutos a valores en hora:minutos:segundos
$actual = date("g:i:s");
$datos = explode(":", $actual);
#Aqui se declara la cantidad de minutos que quieren que descance el programa
#Recuerda esta aplicacion acepta solo minutos menores de 20 para que no marque error
$cantidadm = 1;
#Aqui incia nuestra labor de poder sumarle los minutos a la hora actual asi si son las
# 12:36:23 y le sumas un minuto debe darte 12:37:23
$ho = $datos[0];
$mi = $datos[1];
$seg = $datos[2];
if ($mi == 59 and $cantidadm == 1) {
$mi = "00";
$ho = $ho + 1;
if ($ho > 12){
$res = $ho - 12;
$ho = $res;
}
}

else {
$sumar = $mi + $cantidadm;
if ($sumar > 60) {
$restar = $sumar - 60;
if ($restar < 9){
$mi = "0".$restar;
}
$ho = $ho + 1;
if ($ho > 12){
$res = $ho - 12;
$ho = $res;
}
}
else {
if ($sumar < 9) {
$mi = "0".$sumar;
}
else {
$mi = $sumar;
}
}
}
#lapso sera la variable que tendra el limite deseado, en realidad es el resultado de el codigo de arriba
#que se encarga de sumarle minutos a las horas
$lapso = $ho.":".$mi.":".$seg;

#De aqui en adelante lo que sigue no se toca.
#Si tienes ampli conocimiento de javascript, puedes variar ciertas cosas
#Aunque es conveniente que no.
?>
<html>
<head>
<title>Reloj de Tiempo</title>
<script language="javascript">
<!-- Se abre el comentario para ocultar el script de navegadores antiguos
function muestraReloj()
{
// Compruebo si se puede ejecutar el script en el navegador del usuario
if (!document.layers && !document.all && !document.getElementById) return;
// Obtengo la hora actual y la divido en sus partes
var fechacompleta = new Date();
var horas = fechacompleta.getHours();
var minutos = fechacompleta.getMinutes();
var segundos = fechacompleta.getSeconds();
var mt = "AM";
// Pongo el formato 12 horas
if (horas > 12) {
mt = "PM";
horas = horas - 12;
}
if (horas == 0) horas = 12;
// Pongo minutos y segundos con dos dígitos
if (minutos <= 9) minutos = "0" + minutos;
if (segundos <= 9) segundos = "0" + segundos;
// En la variable 'cadenareloj' puedes cambiar los colores y el tipo de fuente
cadenareloj = "<font size='7' face='verdana' ><b>" + horas + ":" + minutos + ":" + segundos + "</b></font>";
// Escribo el reloj de una manera u otra, según el navegador del usuario
if (document.layers) {
document.layers.spanreloj.document.write(cadenarel oj);
document.layers.spanreloj.document.close();
}
else if (document.all) spanreloj.innerHTML = cadenareloj;
else if (document.getElementById) document.getElementById("spanreloj").innerHTML = cadenareloj;
// Ejecuto la función con un intervalo de un segundo
setTimeout("muestraReloj()", 1000);
}

function verificar() {
var fechacompleta = new Date();
var horas = fechacompleta.getHours();
var minutos = fechacompleta.getMinutes();
var segundos = fechacompleta.getSeconds();
var mt = "AM";
// Pongo el formato 12 horas
if (horas > 12) {
mt = "PM";
horas = horas - 12;
}
if (horas == 0) horas = 12;
// Pongo minutos y segundos con dos dígitos
if (minutos <= 9) minutos = "0" + minutos;
if (segundos <= 9) segundos = "0" + segundos;
// En la variable 'cadenareloj' puedes cambiar los colores y el tipo de fuente
cadenareloj = horas + ":" + minutos + ":" + segundos;

var meta = "<?php echo $lapso?>";
if (document.all) {
if (cadenareloj >= meta) {
spanreloj.innerHTML = "<font size='7' face='verdana' ><b>Tiempo Agotado</b></font>";
document.location = "http://localhost/gaminc/prueba.php?pag=<?php echo $pag?>";
}
}
else {
if (cadenareloj >= meta) {
document.getElementById("spanreloj").innerHTML = "<font size='7' face='verdana' ><b>Tiempo Agotado</b></font>";
}
}
setTimeout("verificar()", 1000);
}


// Fin del script -->
</script>
</head>
<body onload="muestraReloj(); verificar();">
<strong><font color="#000000" size="1" face="helvetica"> <span id="spanreloj" style="position:absolute; left:308px; top:185px; width: 289px; height: 32px;"></span></font></strong>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center"><strong><font size="2" face="Tahoma">Limite:</font></strong><font size="2" face="Tahoma">
<?php echo $lapso?></font> </p>
<p>
</body>
</html>
  #16 (permalink)  
Antiguo 30/07/2003, 10:23
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 14 años, 9 meses
Puntos: 1
asiiassss

Un Saludo
  #17 (permalink)  
Antiguo 30/07/2003, 10:25
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
jeje ok,

Saludos tambien y espero que les sirva de mucho a todos los que lo necesiten.

Me despido.
  #18 (permalink)  
Antiguo 30/07/2003, 11:02
 
Fecha de Ingreso: agosto-2001
Ubicación: Santiago de Chile
Mensajes: 96
Antigüedad: 16 años, 3 meses
Puntos: 0


No se como decirlo....


Super bien....
__________________
maguak
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:58.