Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] No funciona código

Estas en el tema de No funciona código en el foro de PHP en Foros del Web. Hola, por favor tengo un formulario que manda a un email los datos introducidos pero no recibo dicho email. Código PHP: <?php      if(isset( $_POST ...
  #1 (permalink)  
Antiguo 23/06/2013, 12:14
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
No funciona código

Hola, por favor tengo un formulario que manda a un email los datos introducidos pero no recibo dicho email.

Código PHP:
<?php
    
if(isset($_POST['boton'])){
        if(
$_POST['nombre'] == ''){
            
$errors[1] = '<span class="error">Ingrese su nombre</span>';
        }else if(
$_POST['email'] == '' or !preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/",$_POST['email'])){
            
$errors[2] = '<span class="error">Ingrese un email correcto</span>';
        }else if(
$_POST['asunto'] == ''){
            
$errors[3] = '<span class="error">Ingrese un asunto</span>';
        }else if(
$_POST['mensaje'] == ''){
            
$errors[4] = '<span class="error">Ingrese un mensaje</span>';
        }else{
            
$dest "[email protected]"//Email de destino
            
$nombre $_POST['nombre'];
            
$email $_POST['email'];
            
$asunto $_POST['asunto']; //Asunto
            
$cuerpo $_POST['mensaje']; //Cuerpo del mensaje
            //Cabeceras del correo
            
$headers "From: $nombre <$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>';
                
// si el envio fue exitoso reseteamos lo que el usuario escribio:
                
$_POST['nombre'] = '';
                
$_POST['email'] = '';
                
$_POST['asunto'] = '';
                
$_POST['mensaje'] = '';
            }else{
                
$result '<div class="result_fail">Hubo un error al enviar el mensaje </div>';
            }
        }
    }
?>
<html>
    <head>
        <title>Contacto</title>
        <link rel='stylesheet' href='estilos.css'>
        <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js'></script>
        <script src='funciones.js'></script>
    </head>
    <body>
        <form class='contacto' method='POST' action=''>
            <div><label>Tu Nombre:</label><input type='text' class='nombre' name='nombre' value='<?php echo $_POST['nombre']; ?>'><?php echo $errors[1?></div>
            <div><label>Tu Email:</label><input type='text' class='email' name='email' value='<?php echo $_POST['email']; ?>'><?php echo $errors[2?></div>
            <div><label>Asunto:</label><input type='text' class='asunto' name='asunto' value='<?php echo $_POST['asunto']; ?>'><?php echo $errors[3?></div>
            <div><label>Mensaje:</label><textarea rows='6' class='mensaje' name='mensaje'><?php echo $_POST['mensaje']; ?></textarea><?php echo $errors[4?></div>
            <div><input type='submit' value='Envia Mensaje' class='boton' name='boton'></div>
            <?php echo $result?>
        </form>
    </body>
</html>
Gracias
  #2 (permalink)  
Antiguo 23/06/2013, 14:08
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: No funciona código

Generalmente el uso de PHPMailer soluciona el problema de envíos, aunque a veces basta con copiar/adaptar sus encabezados (headers) en tu script.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 23/06/2013, 14:14
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: No funciona código

Gracias Triby, pero como cambiaría el headers?.
  #4 (permalink)  
Antiguo 23/06/2013, 15:49
Avatar de koolj  
Fecha de Ingreso: octubre-2011
Mensajes: 27
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: No funciona código

Yo utilizo mucho esta función. nunca falla

Código PHP:
function enviar($para$asunto$mensaje)
{
    
$email "[email protected]";
    
$cabeceras  'MIME-Version: 1.0' "\r\n";
    
$cabeceras .= 'Content-type: text/html; charset=utf-8' "\r\n";
    
$cabeceras .= 'From: <'.$email.'>' "\r\n";
    
mail($para$asunto$mensaje$cabeceras);


Solo le pasas como parámetros (para, asunto, mensaje)
Si no quieres usar la función usa asi el código
Código PHP:
$para "[email protected]";
$asunto "Asunto";
$mensaje "Aca todo el mensaje. Puedes usar etiquetas HTML";
$email "[email protected]";
$cabeceras  'MIME-Version: 1.0' "\r\n";
$cabeceras .= 'Content-type: text/html; charset=utf-8' "\r\n";
$cabeceras .= 'From: <'.$email.'>' "\r\n";
mail($para$asunto$mensaje$cabeceras); 
Puedes meter la funcion mail dentro de un if > true si envía y false si no envia
  #5 (permalink)  
Antiguo 24/06/2013, 02:36
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: No funciona código

Cita:
Iniciado por koolj Ver Mensaje
Yo utilizo mucho esta función. nunca falla

Código PHP:
function enviar($para$asunto$mensaje)
{
    
$email "[email protected]";
    
$cabeceras  'MIME-Version: 1.0' "\r\n";
    
$cabeceras .= 'Content-type: text/html; charset=utf-8' "\r\n";
    
$cabeceras .= 'From: <'.$email.'>' "\r\n";
    
mail($para$asunto$mensaje$cabeceras);


Solo le pasas como parámetros (para, asunto, mensaje)
Si no quieres usar la función usa asi el código
Código PHP:
$para "[email protected]";
$asunto "Asunto";
$mensaje "Aca todo el mensaje. Puedes usar etiquetas HTML";
$email "[email protected]";
$cabeceras  'MIME-Version: 1.0' "\r\n";
$cabeceras .= 'Content-type: text/html; charset=utf-8' "\r\n";
$cabeceras .= 'From: <'.$email.'>' "\r\n";
mail($para$asunto$mensaje$cabeceras); 
Puedes meter la funcion mail dentro de un if > true si envía y false si no envia
Gracias, lo he puesto pero no me funciona:

Código PHP:
<?php

$name 
$_POST['name']; 
$telefonos $_POST['telefonos'];
$localidad $_POST['localidad'];
$marcas $_POST['marcas'];
$aparatos $_POST['aparatos'];
$observaciones $_POST['observaciones'];

$header .= 'From:'$telefonos " \r\n";
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje .= "Nombre: " $_POST['name'] . " \r\n"
$mensaje .= "Telefono: " $_POST['telefonos'] . " \r\n";
$mensaje .= "Localidad: " $_POST['localidad'] . " \r\n";
$mensaje .= "Marca: " $_POST['marcas'] . " \r\n"
$mensaje .= "Aparato: " $_POST['aparatos'] . " \r\n";
$mensaje .= "Observaciones: " $_POST['observaciones'] . " \r\n";
$para "[email protected]";
$asunto 'AVISO DE REPARACION';

mail($para$asunto,utf8_decode($mensaje), $header);


?>
</h2>
<h2 align="center">¡Gracias!</h2>
<h2 align="center">¡En breve nos pondremos en contacto con usted!</h2>
</noscript>
  #6 (permalink)  
Antiguo 24/06/2013, 02:47
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: No funciona código

Hola:

Yo he dejado de usar gmail (no sé si será tu caso) porque parece que los consideran spam... has probado con más cuentas... detecté el problema porque enviaba el correo a varias cuentas y en una "no gmail" me devolvía el demonio con la info.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 24/06/2013, 07:22
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 8 meses
Puntos: 20
Respuesta: No funciona código

Ya te aseguraste de que si están llegando tus datos a la función de envió de correo?

Es decir entre el codigo antes de enviar poner un echo de las variables:
Código PHP:
Ver original
  1. $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; //
  2.  
  3. echo "$dest,$asunto,$cuerpo";
  4.  
  5. if(mail($dest,$asunto,$cuerpo,$headers))

Aparte en tu form no veo ninguna Acción que se ejecute pero primero asegúrate que estén llegando las variables a la función

Código HTML:
Ver original
  1. <form class='contacto' method='POST' action=''>
  #8 (permalink)  
Antiguo 24/06/2013, 07:46
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: No funciona código

Hola:

Cita:
Iniciado por Sergestux Ver Mensaje
...
Aparte en tu form no veo ninguna Acción que se ejecute...

Código HTML:
Ver original
  1. <form class='contacto' method='POST' action=''>
Ese action indica que se envíe a sí mismo.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #9 (permalink)  
Antiguo 24/06/2013, 08:19
Avatar de koolj  
Fecha de Ingreso: octubre-2011
Mensajes: 27
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: No funciona código

Tal ves es algo con el SMTP
Yo probé este código y funciona. Espero te sirva
Código:
<?php
    if ($_POST) {
        $name = $_POST['nombre'];
        $para = "[email protected]";
        $asunto = $_POST['asunto'];
        $mensaje = $_POST['mensaje'];
        $email = $_POST['email'];
        $cabeceras  = 'MIME-Version: 1.0' . "\r\n";
        $cabeceras .= 'Content-type: text/html; charset=utf-8' . "\r\n";
        $cabeceras .= 'From: <'.$email.'>' . "\r\n";
        if (mail($para, $asunto, $mensaje, $cabeceras)) {
                $result = "Email enviado";
        } else {
            $result = "Upps Ocurio un error";
        }
    }
    else{
        $result = "";
    }
?>
<html>
    <head>
        <title>Contacto</title>
        <link rel='stylesheet' href='estilos.css'>
        <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js'></script>
        <script src='funciones.js'></script>
    </head>
    <body>
        <form class='contacto' method='POST' action=''>
            <div><label>Tu Nombre:</label><input type='text' class='nombre' name='nombre'></div>
            <div><label>Tu Email:</label><input type='text' class='email' name='email'></div>
            <div><label>Asunto:</label><input type='text' class='asunto' name='asunto'></div>
            <div><label>Mensaje:</label><textarea rows='6' class='mensaje' name='mensaje'></textarea></div>
            <div><input type='submit' value='Envia Mensaje' class='boton' name='boton'></div>
             <?php echo $result; ?>
        </form>
    </body>
</html>
  #10 (permalink)  
Antiguo 24/06/2013, 08:49
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: No funciona código

Gracias a todos y perdonad. El problema estaba en el holding.

Etiquetas: formulario, html
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 01:49.