Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] error en sistema de envío de email

Estas en el tema de error en sistema de envío de email en el foro de PHP en Foros del Web. Hola a todos. Estoy creando un sistema en el que si el email que se introduce está mal, se ilumina la caja re rojo. Si ...
  #1 (permalink)  
Antiguo 15/02/2013, 18:51
 
Fecha de Ingreso: septiembre-2011
Mensajes: 60
Antigüedad: 12 años, 8 meses
Puntos: 1
Pregunta error en sistema de envío de email

Hola a todos.
Estoy creando un sistema en el que si el email que se introduce está mal, se ilumina la caja re rojo. Si funciona, se envía el correo con el email introducido (sistema de aviso de novedades).

Lo puse aquí porque el envío funciona con PHP, aunque tenga un javascript:
Código PHP:
<script>
$(function() { 
    var emailreg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;    
    $(".enviar").click(function(){
    
        if ($("#email").val() == "" || !emailreg.test($("#email").val())) {
            $("#email").css( "border-color", "#ee2c2c" );
            $("#email").css( "box-shadow", "inset 0 10px 10px -10px rgba(0,0,0,0.1), 0 0 6px 0 rgba(238,44,44,0.6)" );
            $("#email").focus()
            return false;  
        } else {
            <?php
            $dest 
"[email protected]"//Email de destino
            
$email $_POST['email'];
            
$asunto "Novedades"//Asunto
            
$cuerpo "$email"//Cuerpo del mensaje
            //Cabeceras del correo
            
$headers "From: $email\r\n"//Quien envia?
            
$headers .= "X-Mailer: PHP5\n";
            
$headers .= 'MIME-Version: 1.0' "\n";
            
$headers .= 'Content-type: text/html; charset=iso-8859-1' "\r\n"//
            
            
if(mail($dest,$asunto,$cuerpo,$headers)){
                
$result '<div class="result_ok">Email enviado correctamente :)</div>';    
                
$_POST['email'] = '';
            }
            
?>
            return false;  
        }
         if($("#email").focus()) {
             $("#email").css( "border-color", "#000" );
         }
        
    }); 
});
</script>
El error es que al entrar en la página, se envía automáticamente un email sin contenido a la dirección que le he especificado.
¿Cómo puedo hacer que sólo se envíe si es correcto el email y se le da al botón enviar mediante ese script con PHP?
  #2 (permalink)  
Antiguo 15/02/2013, 19:29
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 2 meses
Puntos: 137
Respuesta: error en sistema de envío de email

Código PHP:
Ver original
  1. if($_POST){
  2.             $dest = "[email protected]"; //Email de destino
  3.             $email = $_POST['email'];
  4.             $asunto = "Novedades"; //Asunto
  5.             $cuerpo = "$email"; //Cuerpo del mensaje
  6.             //Cabeceras del correo
  7.             $headers = "From: $email\r\n"; //Quien envia?
  8.             $headers .= "X-Mailer: PHP5\n";
  9.             $headers .= 'MIME-Version: 1.0' . "\n";
  10.             $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; //
  11.              
  12.             if(mail($dest,$asunto,$cuerpo,$headers)){
  13.                 $result = '<div class="result_ok">Email enviado correctamente :)</div>';    
  14.                 $_POST['email'] = '';
  15.             }
  16. }
__________________
>> abimaelmartell.com
  #3 (permalink)  
Antiguo 15/02/2013, 19:46
 
Fecha de Ingreso: septiembre-2011
Mensajes: 60
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: error en sistema de envío de email

Cita:
Iniciado por abimex Ver Mensaje
Código PHP:
Ver original
  1. if($_POST){
  2.             $dest = "[email protected]"; //Email de destino
  3.             $email = $_POST['email'];
  4.             $asunto = "Novedades"; //Asunto
  5.             $cuerpo = "$email"; //Cuerpo del mensaje
  6.             //Cabeceras del correo
  7.             $headers = "From: $email\r\n"; //Quien envia?
  8.             $headers .= "X-Mailer: PHP5\n";
  9.             $headers .= 'MIME-Version: 1.0' . "\n";
  10.             $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; //
  11.              
  12.             if(mail($dest,$asunto,$cuerpo,$headers)){
  13.                 $result = '<div class="result_ok">Email enviado correctamente :)</div>';    
  14.                 $_POST['email'] = '';
  15.             }
  16. }
He sustituido el código PHP por ese, quedando:
Código PHP:
<script>
$(function() { 
    var emailreg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;    
    $(".enviar").click(function(){
    
        if ($("#email").val() == "" || !emailreg.test($("#email").val())) {
            $("#email").css( "border-color", "#ee2c2c" );
            $("#email").css( "box-shadow", "inset 0 10px 10px -10px rgba(0,0,0,0.1), 0 0 6px 0 rgba(238,44,44,0.6)" );
            $("#email").focus()
            return false;  
        } else {
            <?php
                
if($_POST){
                    
$dest "[email protected]"//Email de destino
                    
$email $_POST['email'];
                    
$asunto "Enviar novedades sobre feever"//Asunto
                    
$cuerpo "Email para enviar novedades sobre Feever:<br>$email"//Cuerpo del mensaje
                    //Cabeceras del correo
                    
$headers "From: $email\r\n"//Quien envia?
                    
$headers .= "X-Mailer: PHP5\n";
                    
$headers .= 'MIME-Version: 1.0' "\n";
                    
$headers .= 'Content-type: text/html; charset=iso-8859-1' "\r\n"//
            
                    
if(mail($dest,$asunto,$cuerpo,$headers)){
                        
$result '<div class="result_ok">Email enviado correctamente :)</div>';    
                        
$_POST['email'] = '';
                    }
                }
            
?>
            return false;  
        }
         if($("#email").focus()) {
             $("#email").css( "border-color", "#000" );
         }
        
    }); 
});
</script>
Y ahora, efectivamente, no envía automáticamente un mensaje sin contenido al entrar. Además de que funciona el detector de email (si es verdadero o no), pero al darle a enviar no hace nada. Simplemente le doy al botón se queda tal cual. Ni envía ni se mueve nada.

Cómo hacer que envíe el mensaje?
Saludos!
  #4 (permalink)  
Antiguo 15/02/2013, 21:23
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 9 meses
Puntos: 105
Respuesta: error en sistema de envío de email

Holas,

Creo que es mal usado o interpretado el PHP con el Javascript y tambien creo que mejor usarias esta logica:

Código PHP:
Ver original
  1. <?php
  2.     if(isset($_POST['email'])){
  3.         $dest = "[email protected]"; //Email de destino
  4.         $email = $_POST['email'];
  5.         $asunto = "Enviar novedades sobre feever"; //Asunto
  6.         $cuerpo = "Email para enviar novedades sobre Feever:<br>$email"; //Cuerpo del mensaje
  7.         //Cabeceras del correo
  8.         $headers = "From: $email\r\n"; //Quien envia?
  9.         $headers .= "X-Mailer: PHP5\n";
  10.         $headers .= 'MIME-Version: 1.0' . "\n";
  11.         $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; //
  12.  
  13.         if(mail($dest,$asunto,$cuerpo,$headers)){
  14.             $result = '<div class="result_ok">Email enviado correctamente :)</div>';    
  15.             $_POST['email'] = '';
  16.         }
  17.     }
  18. ?>
  19. <script type="text/javascript">
  20. $(function() {
  21.     var emailreg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;    
  22.     $(".enviar").click(function(){
  23.    
  24.         if ($("#email").val() == "" || !emailreg.test($("#email").val())) {
  25.             $("#email").css( "border-color", "#ee2c2c" );
  26.             $("#email").css( "box-shadow", "inset 0 10px 10px -10px rgba(0,0,0,0.1), 0 0 6px 0 rgba(238,44,44,0.6)" );
  27.             $("#email").focus()
  28.             return false;  
  29.         } else {
  30.            
  31.             $(this).parent().submit();
  32.         }
  33.          
  34.        
  35.     });
  36. });
  37. </script>


Los eventos del PHP son en el servidor y no en el cliente.

Saludos,
__________________
.: Gildus :.
  #5 (permalink)  
Antiguo 16/02/2013, 04:49
 
Fecha de Ingreso: septiembre-2011
Mensajes: 60
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: error en sistema de envío de email

Ok, funciona perfectamente, muchas gracias!!

Etiquetas: email, html, sistema
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 08:35.