Foros del Web » Programando para Internet » PHP »

Retardar funcion mail()

Estas en el tema de Retardar funcion mail() en el foro de PHP en Foros del Web. hola compañeros, Busqué por el foro y por internet, pero no fui capaz de encontrar una solución a mi necesidad utilizando únicamente código PHP. Quisiera ...
  #1 (permalink)  
Antiguo 18/12/2013, 12:22
Avatar de TROQUELADO  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 94
Antigüedad: 15 años, 11 meses
Puntos: 0
Mensaje Retardar funcion mail()

hola compañeros,

Busqué por el foro y por internet, pero no fui capaz de encontrar una solución a mi necesidad utilizando únicamente código PHP. Quisiera retardar media hora el envío de un e-mail que se manda con la función mail() (es para un formulario de contacto).

Las soluciones que he encontrado con php logran el efecto, pero a la vez de retardar la función mail(), también retardan la carga de la página en sí, como p.e. la función sleep().
También encontré soluciones que utilizaban una base de datos, etc. Pero en mi caso sería necessario que solo utilizase php y/o javascript.

Si alguien sabe un modo de hacerlo, soy todo oidos.
Muchas gracias
  #2 (permalink)  
Antiguo 18/12/2013, 12:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Retardar funcion mail()

Con puro PHP no vas a poder hacerlo sin sleep() lo mejor que puedes hacer es, tener un Cron que sea el encargado de enviar los mails, y desde PHP haces un registro (ya sea en una BDD, o archivo o algo) donde indiques cuando se va a realizar el envio.

Luego desde el cron, ejecutas un script PHP que lea esa BDD/Archivo y verifique la fecha de cuando se tiene que enviar y haga el envio correspondiente.
  #3 (permalink)  
Antiguo 18/12/2013, 12:51
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 15 años, 10 meses
Puntos: 12
Respuesta: Retardar funcion mail()

Como dice GatorV lo que necesitas es que un cron ejecute el envio de los correos. El framework symfony2 tiene la libreria swiftmailer para realizar los envios y permite algo llamado spool.

http://symfony.com/doc/current/cookb...ail/spool.html

Saludos.
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #4 (permalink)  
Antiguo 19/12/2013, 09:29
Avatar de TROQUELADO  
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 94
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Retardar funcion mail()

Muchisimas gracias GatorV y xalupeao, voy a estudiar vuestras soluciones a ver si lo consigo.
  #5 (permalink)  
Antiguo 19/12/2013, 11:14
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 8 meses
Puntos: 27
Respuesta: Retardar funcion mail()

crear un archivo que se encargue de enviar el mail y haga el retardo que estes buscando, despues ejecuta el script en segundo plano, desde otro archivo

if( $enviarMail ){
exec('php ../script/envioEmail.php');
}
  #6 (permalink)  
Antiguo 22/12/2013, 09:49
 
Fecha de Ingreso: diciembre-2012
Mensajes: 178
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Retardar funcion mail()

que pasa si las personas se registran en horarios diferentes o si nadie se registra siempre se ejecutara el script del cron y te consumira recursos y no tendra destinos el mail no hay problema con eso???
__________________
clasificados nunca se sabe todo

Etiquetas: email, mail, sleep
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 10:53.