Foros del Web » Programando para Internet » PHP »

Tengo problemas para enviar mails con mail()

Estas en el tema de Tengo problemas para enviar mails con mail() en el foro de PHP en Foros del Web. Que tal, quisiera ver si algun de ustedes podria ser tan amable de detectar algun fallo en estos códigos, por que según yo ya chequé ...
  #1 (permalink)  
Antiguo 21/03/2006, 00:24
 
Fecha de Ingreso: enero-2006
Mensajes: 3
Antigüedad: 11 años, 10 meses
Puntos: 0
Tengo problemas para enviar mails con mail()

Que tal, quisiera ver si algun de ustedes podria ser tan amable de detectar algun fallo en estos códigos, por que según yo ya chequé como 500 veces y los mails siguen sin llegarme al correo especificado

Primero pues el formulario está aqui:

Código HTML:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<style type="text/css">
td, tr, p, div {
  font-family      : Arial, Helvetica, sans-serif;
  font-size        : 12px;
  font-weight      :bold;
  color            : #996600;
}

.send {
  color            : #996600;
  font-family      : Tahoma, Verdana, Arial, Helvetica, sans-serif;
  font-size        : 11px;
  background-repeat: no-repeat;
  white-space      : normal;
  font-weight      : normal;
  border           : 1px solid #BCB778;
  float            : left;
  font-weight      : normal;
  line-height      : 10px;
  text-decoration  : none; }
  
  .inputbox {
  border           : 1px solid #BCB778;
  background:transparent url(back.gif);
  background-color : #ECEAD8;
  margin-bottom    : 5px;
  color			   : #660000;
}

.style1 {font-size: 14px}
</style>
</head>

<body>
<p>&nbsp;</p>
<form action="reservaciones.php" method="post">
  <table border="0" align="left">
    <tr>
      <td>Nombre / Name:</td>
      <td><input name="nombre" type="text" class="inputbox" id="nombre" /></td>
    </tr>
    <tr>
      <td>Direcci&oacute;n / Address:</td>
      <td><input name="direccion" type="text" class="inputbox" id="direccion" /></td>
    </tr>
    <tr>
      <td>Tel&eacute;fono / Phone:</td>
      <td><input name="telefono" type="text" class="inputbox" id="telefono" /></td>
    </tr>
    <tr>
      <td>Ciudad / City:</td>
      <td><input name="ciudad" type="text" class="inputbox" id="ciudad" /></td>
    </tr>
    <tr>
      <td>Estado / State:</td>
      <td><input name="estado" type="text" class="inputbox" id="estado" /></td>
    </tr>
    <tr>
      <td>Pa&iacute;s / Country:</td>
      <td><input name="pais" type="text" class="inputbox" id="pais" /></td>
    </tr>
    <tr>
      <td>Compa&ntilde;ia / Company:</td>
      <td><input name="compania" type="text" class="inputbox" id="compania" /></td>
    </tr>
    <tr>
      <td>E-Mail:</td>
      <td><input name="mail" type="text" class="inputbox" id="mail" /></td>
    </tr>
    <tr>
      <td>Fecha de Llegada / Arrival Date: </td>
      <td><input name="llegada" type="text" class="inputbox" id="llegada" /></td>
    </tr>
    <tr>
      <td>Fecha de Salida / Date of Exit: </td>
      <td><input name="salida" type="text" class="inputbox" id="salida" /></td>
    </tr>
    <tr>
      <td colspan="2"><p>&nbsp;</p>
      <p>Tipo de Habitaci&oacute;n Requerida / Room Type Required: </p>
      <p class="style1">&nbsp;</p></td>
    </tr>
    <tr>
      <td>Sencilla o Doble / Single or Double: </td>
      <td><select name="sencilla" class="send" id="sencilla">
        <option selected="selected">0</option>
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
        <option>5</option>
        <option>6</option>
        <option>7</option>
        <option>8</option>
        <option>9</option>
        <option>10</option>
        <option>11</option>
      </select></td>
    </tr>
    <tr>
      <td align="left" valign="top">Triple / Triple Room: </td>
      <td align="left" valign="top"><select name="triple" class="send" id="triple">
        <option value="0">0</option>
        <option value="1">1</option>
        <option value="2">2</option>
      </select></td>
    </tr>
    <tr>
      <td align="left" valign="top">Junior Suite / Jr. Suite Room: </td>
      <td align="left" valign="top"><select name="suite" class="send" id="suite">
        <option value="0">0</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
      </select></td>
    </tr>
    <tr>
      <td colspan="2"><p>Observaciones / Notes:</p>
        <p>
          <textarea name="textarea" cols="40" rows="3" class="inputbox"></textarea>
        </p>
        <p>
          <input name="submit" type="submit" class="send" id="Submit" value="Enviar / Submit" />
        </p></td>
    </tr>
    <tr>
      <td colspan="2">&nbsp;</td>
    </tr>
  </table>
</form>
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html> 
Aqui tengo el reservaciones.php donde supuestamente se manda la info del formulario:

Código PHP:
<?php

$msg 
"Este es el contenido del formulatio mandado\n\n";

$field_name array_keys($HTTP_POST_VARS); // guardamos todos los nombres de los "fields" existentes en el formulario
$value_name array_values($HTTP_POST_VARS);// guardamos todos los valores en sus respectivas variables

for ($i=0;$i<count($field_name);$i++)
{
    
$msg .= "".$field_name[$i].": ".$value_name[$i]."\n\n"// $msg reune el nombre de la variable y su valor
}

$recipient "[email protected]"// el mail deseado
$subject "Reservaciones"// el titulo del mail
$mailheaders "From: Reservaciones <hotellascrucesmerida.com> \n"// quien lo manda y el dominio
$mailheaders .= "Reply-To: ".$mail."\n\n";    // responder a: Importante! si quieres que el replay:to funcione tienes 
                                            //que tener en el formulario un field que tiene como nombre "mail".

mail($recipient$subject$msg$mailheaders);// mandamos el mail con los todos los datos
header('location:gracias.php'); // y vamos a la pagina en donde nos dan las gracias por haber llenado en formulario
?>
Y aquí tenemos el gracias.php que no tiene gran cosa mas que una confirmación de envio.
Código PHP:
<?php
echo "Su mensaje ha sido enviado" ;
?>
Y pues son esos 3 archivos, si lleno el formulario y luego le doy enviar, perfectamente aparece el mensaje de "su mensaje ha sido enviado" o sea que el formulario si manda a reservaciones.php que a un ves llama a gracias.php, si no no saldría el mensaje creo yo.

Alguien se da cuenta del error ? mi correo está bien, solo faltaba que no lo hubiera puesto bien jeje, pero eso es lo unico que está bien, doy mi palabra.
  #2 (permalink)  
Antiguo 21/03/2006, 02:04
 
Fecha de Ingreso: diciembre-2005
Ubicación: México
Mensajes: 31
Antigüedad: 12 años
Puntos: 0
en el archivo reservaciones.php cambia HTTP_POST_VARS por _POST
Cita:
<?php

$msg = "Este es el contenido del formulatio mandado\n\n";

$field_name = array_keys($_POST); // guardamos todos los nombres de los "fields" existentes en el formulario
$value_name = array_values($_POST);// guardamos todos los valores en sus respectivas variables

for ($i=0;$i<count($field_name);$i++)
{
$msg .= "".$field_name[$i].": ".$value_name[$i]."\n\n"; // $msg reune el nombre de la variable y su valor
}

$recipient = "[email protected]"; // el mail deseado
$subject = "Reservaciones"; // el titulo del mail
$mailheaders = "From: Reservaciones <hotellascrucesmerida.com> \n"; // quien lo manda y el dominio
$mailheaders .= "Reply-To: ".$mail."\n\n"; // responder a: Importante! si quieres que el replay:to funcione tienes
//que tener en el formulario un field que tiene como nombre "mail".

mail($recipient, $subject, $msg, $mailheaders);// mandamos el mail con los todos los datos
header('location:gracias.php'); // y vamos a la pagina en donde nos dan las gracias por haber llenado en formulario
?>
__________________
Carlos Magaña
Mi Blog | Guanajuato
  #3 (permalink)  
Antiguo 21/03/2006, 03:30
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 12 años, 7 meses
Puntos: 2
De todas formas, aunque te redireccione a gracias.php, no tiene porque haberse enviado, porque, en tu codigo:
Código PHP:
mail($recipient$subject$msg$mailheaders);
header('location:gracias.php'); 
no compruebas en ningun momento el posible error de mail(). Para hacerlo, debería ser una cosa asi:
Código PHP:
if(mail($recipient$subject$msg$mailheaders)){
     
header('location:gracias.php');
}else{
     echo 
"Mensaje no enviado";

Ya que mail devuelve true o false dependiendo se lo ha podido enviar o no. Deberias empezar comprobando eso, que realmente mail() lo manda bien.
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #4 (permalink)  
Antiguo 21/03/2006, 09:28
 
Fecha de Ingreso: enero-2006
Mensajes: 3
Antigüedad: 11 años, 10 meses
Puntos: 0
De acuerdo Gracias

Que tal carloslmz y oskarL, gracias por responder a mi mensaje, ayer en la noche por fin luego de dar tantas vueltas leí en el foro que si no estaba activado o bien configurado el smtp no se iba a mandar el correo, efectivamente, en el servidor yahoo mas que no estar activado, no estaba configurado, pero ayer le puse y empezó a funcionar a la perfección

Les mando un gran saludo y tomaré en cuenta sus consejos para seguir mejorando el tema del formulario.

Saludos desde México.
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:02.