Abrir una ventana popup automáticamente

Tengo una página (sitio) en php. Resulta que en cierto momento y utilizando la librería swift_required envío un correo tomando los datos de un formulario y haciendo una rellamada a la propia página. El asunto es que al llegar a la parte del envío php no permite hacer nada hasta que termine. Deseo que una ventana popup se despliegue mientras dura el envío ("El correo está siendo enviado"). He probado con varias tecnologías (css, easyModal, etc) pero no abren automáticamente en cuanto recargo la página hasta tanto el envío no termina. La solución que he tomado es usando una página intermedia, pero realmente no me gusta mucho.

2 respuestas

Respuesta

¿Usas localhost como servidor SMTP o uno externo? Si es externo, puede ser el motivo del retardo; si es el localhost, puede ser que tarde en la resolución de su propio dominio, prueba por IP en este caso.

Un pop-up como tal casi es peor que la espera. Puedes usar AJAX para enviar el formulario a otra página que devuelva el resultado del envío. Si no puedes disminuir el retardo puedes usar una cola de envíos que se ejecute cada X minutos con cronjob.

Respuesta

La verdad es que no entiendo la pregunta... a ver si me puedes dar más datos.

Muy bien amigo, trataré de explicarme más. Monté un servidor local en mi PC (wamp). Tengo una página (en php) llamada "enviarcorreo.php" donde luego de tomar los datos de un formulario en el "action" hago una rellamada al propio "enviarcorreo.php", con el método que utiliza DreamWeaver, es decir, durante la rellamada verifica si cierto campo de texto existe (en mi caso se llama "oculto") y si es así ejecuta el envío del mensaje email, porque significa que ha sido rellamado, pues antes no exista. Con el envío no hay problema, se ejecuta bien. El asunto es que quiero que cuando sea llamada de nuevo la página (después del if(isset($_POST["oculto"]...) y antes de comenzar el envío salga la ventana popup advirtiendo que el mensaje está siendo enviado, que debe esperar. He probado muchísimos métodos, todos me crean el popup, pero no me lo visualizan hasta tanto el mensaje no haya sido enviado. Comento esta línea ($mailer->send($message);) y sale el popup pero no el mensaje (lógicamente), la descomento y sale el mensaje pero no el popup. Quiera Dios que me haya entendido. Dios lo siga bendiciendo.

La solución que le he dado hasta ahora es usando una página intermedia (no popup), que solo tiene el "Espere, el mensaje se esté enviando..." y esta llama a otra automáticamente que es quien realmente hace el envío. Como es transparente para el usuario pues no pasa nada, pero, no se, no lo encuentro elegante.

No hagas que el popup dependa del envío, phpmailer siempre va a tardar un poco en enviar el mensaje, si he entendido bien lo que dices. Usa un texto que no dependa de phpmailer para que lo muestre por pantalla y por detrás que se envíe el mail como habitualmente.

¡Gracias por su respuesta! Supongo que debo quedarme con la variante que ya establecí. Le agradezco grandemente su interés por ayudarme. No uso phpmailer, pero imagino que la solución pasa por lo mismo. Muchas gracias reiteradas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas