Dudas Php Mail MySql...

The-Mik3s

Bovino Milenario
#1
Buen día bakunos devs!!!

Bueno para ir al grano tengo varias dudas para enviar correos masivos mediante PHP y MySQL

Bueno, para iniciar hice un módulo para realizar el envío masivo.

Mis codigos:

index.php
HTML:
<!DOCTYPE html>
<html>

  <head>

    <meta charset="utf-8">
    
    <title>Citimpuestos.com</title>

    <link rel="shortcut icon" href="https://www.citimpuestos.com/favicon.ico" />

    <link rel="icon" href="https://www.citimpuestos.com/favicon.ico" type="image/x-icon" />

    <link rel="apple-touch-icon" href="https://www.citimpuestos.com/apple-touch-icon.png">

    <link rel="stylesheet" href="http://yui.yahooapis.com/2.9.0/build/reset/reset-min.css">

    <link rel="stylesheet" href="css/stylesheet.css">

    <script src="../parser_rules/advanced.js" ></script>

    <script src="../dist/jquery.js" ></script>

    <script src="../dist/wysihtml5-0.3.0.min.js" ></script>


  </head>

  <body>
    <div id="wysihtml5-editor-toolbar">
      <header>
        <ul class="commands">
          <li data-wysihtml5-command="bold" title="Make text bold (CTRL + B)" class="command"></li>
          <li data-wysihtml5-command="italic" title="Make text italic (CTRL + I)" class="command"></li>
          <li data-wysihtml5-command="insertUnorderedList" title="Insert an unordered list" class="command"></li>
          <li data-wysihtml5-command="insertOrderedList" title="Insert an ordered list" class="command"></li>
          <li data-wysihtml5-command="createLink" title="Insert a link" class="command"></li>
          <li data-wysihtml5-command="insertImage" title="Insert an image" class="command"></li>
          <li data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h1" title="Insert headline 1" class="command"></li>
          <li data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h2" title="Insert headline 2" class="command"></li>
          <li data-wysihtml5-action="change_view" title="Show HTML" class="action"></li>
        </ul>
      </header>

      <div data-wysihtml5-dialog="createLink" style="display: none;">
        <label>
          Link:
          <input data-wysihtml5-dialog-field="href" value="http://">
        </label>
        <a data-wysihtml5-dialog-action="save">OK</a>&nbsp;<a data-wysihtml5-dialog-action="cancel">Cancel</a>
      </div>

      <div data-wysihtml5-dialog="insertImage" style="display: none;">
        <label>
          Image:
          <input data-wysihtml5-dialog-field="src" value="http://">
        </label>
        <a data-wysihtml5-dialog-action="save">OK</a>&nbsp;<a data-wysihtml5-dialog-action="cancel">Cancel</a>
      </div>
    </div>
    <a href="https://www.citimpuestos.com/">
      <img src="https://www.citimpuestos.com/img/logotipo.jpg" title="Citimpuestos.com" alt="Citimpuestos.com" />
    </a>
    <section>
    <div id="cargados"></div>
      <form>
        <input type="button" value="Enviar Correos" onclick="seleccionado();">
        <br />
        Correo:
        <br />
        <!--<input type="email" placeholder="usuario@servidor.ext" id="inputCorreo" /> -->
        <br />
        Asunto:
        <br />
        <input type="text" placeholder="Asunto del correo" id="inputAsunto" />
        Mensaje del correo:
        <hr />
        <textarea id="inputMensaje" placeholder="Mensaje" style="height: 400px"></textarea>
      </form>
    </section>
    <script>
      var editor = new wysihtml5.Editor("inputMensaje", {
        toolbar:     "wysihtml5-editor-toolbar",
        stylesheets: ["http://yui.yahooapis.com/2.9.0/build/reset/reset-min.css", "css/editor.css"],
        parserRules: wysihtml5ParserRules
      });
    </script>
    <script type="text/javascript">
      function seleccionado(){
        var inputMensaje = document.getElementById("inputMensaje").value;
        //var inputCorreo = document.getElementById("inputCorreo").value;
        var inputAsunto = document.getElementById("inputAsunto").value;
        
        if (inputMensaje == "") {
          $("#cargados").append("Llene todos los campos");
        }
        else{
          var data = new FormData();
          data.append('inputMensaje',inputMensaje);
          //data.append('inputCorreo',inputCorreo);
          data.append('inputAsunto',inputAsunto);

          $.ajax({
            url:'fnCorreo.php', //Url a donde la enviaremos
            type:'POST', //Metodo que usaremos
            contentType:false, //Debe estar en false para que pase el objeto sin procesar
            data:data, //Le pasamos el objeto que creamos con los archivos
            processData:false, //Debe estar en false para que JQuery no procese los datos a enviar
            cache:false //Para que el formulario no guarde cache
          }).done(function(msg){
            $("#cargados").append(msg); //Mostrara los archivos cargados en el div con el id "Cargados"
          });
        }
      }
    </script>
  </body>
</html>
PHP:
<?php 
	require("c0nf1g.php");
	global $sys;
	mysql_query("SET NAMES utf8");

	$De = "noreply@citimpuestos.com";
	$titulo = $_POST['inputAsunto'];;
	$mensaje = $_POST['inputMensaje'];
	//$Correo = htmlentities($_POST['inputCorreo']);
	$mensaje = str_replace('\"', '"', $mensaje);
	$headers = "From: <".$De.">\r\n";
	$headers .= "Reply-To: \r\n";
	$headers .= "MIME-Version: 1.0\r\n";
	$headers .= "Content-Type: text/html; charset=utf8\r\n";
	$headers .= "Disposition-Notification-To: <michelvato@hotmail.com>\r\n";
	$headers .= "X-Confirm-Reading-To: <michelvato@hotmail.com>\r\n";
	$qrCorreos = 'SELECT * FROM sys_tbcorreos';
	$resultado = mysql_query($qrCorreos);
	$i=0;
	while ($row=mysql_fetch_array($resultado)){
		$finalizado = mail($row['cpCorreo'],$titulo,$mensaje,$headers);	
		if ($finalizado) {
			$i++;
				echo '<strong>Se ha enviado el correo a:
				'.$row['cpCorreo'].'
				 un segundo para enviar el siguiente correo.
				<br />
			';
			sleep(1);
		}
	}
	echo $mensaje;
	if ($i==0) {
		echo '<strong>No se envió ningun correo :(</strong>';
	}
	/*
	if ($finalizado = mail($Correo,$titulo,$mensaje,$headers)) {
		echo '<strong>Se ha enviado correctamente el siguiente correo a: '.$Correo.'<br />'.$mensaje.'</strong>';
	}
	else{
		echo '<strong>Hubo algún problema, intentelo más tarde</strong>';
	}
	*/
	
?>
Bueno ahm la partes comentadas son para cuando realizo las pruebas,
Pero bueno ahora mis dudas son...

Resource Limits --> max_execution_time --> 30

Si uso

sleep();

Y son 2500 correos supera esos 30 segundos que me permite el servidor.

sleep(), reinicia ese contador?

Existe alguna otra manera de hacer lo que necesito?

Me aconsejan si han tenido este tipo de problemas y cual sería la mejor opción.

Otro dato:
El servidor se contrato exclusivamente para el envío de correos, por lo cual no tiene más tareas por hacer.

Muchas gracias, espero su apoyo ^^

EDITO

Buscando en la web, encontré:

set_time_limit (0);

Me permite poner en tiempo indefinido el script que ando manejando.
Omite la parte de:

Resource Limits --> max_execution_time --> 30

Que viene por default en mi servidor, acabo de ponerlo en practica a ver que me resulta, aún así espero sus opiniones.

Gracias!!!
 
Arriba