Foros del Web » Programando para Internet » PHP »

Problema con formulario de contacto, función mail ()

Estas en el tema de Problema con formulario de contacto, función mail () en el foro de PHP en Foros del Web. Buenas, tengo un formulario de contacto pero cuando trato de enviar un mail me tira el siguiente error: Warning: mail() [function.mail]: SMTP server response: 554 ...
  #1 (permalink)  
Antiguo 14/02/2012, 16:48
 
Fecha de Ingreso: mayo-2010
Mensajes: 53
Antigüedad: 13 años, 10 meses
Puntos: 0
Problema con formulario de contacto, función mail ()

Buenas, tengo un formulario de contacto pero cuando trato de enviar un mail me tira el siguiente error:

Warning: mail() [function.mail]: SMTP server response: 554 No se permite el envio de correo sin especificar una cuenta valida desde donde sale el correo. in \\hmfsw\web\DTCWIN108\centroficch.com.ar\public_ht ml\contacto.php on line 207

La línea 207 es la siguiente:

if(mail($dest,$asunto,$cuerpo,$headers))

Aquí el código entero:

Código PHP:
Ver original
  1. <?php
  2.         if(isset($_POST['boton'])){
  3.             if($_POST['nombre'] == ''){
  4.                 $errors[1] = '<span class="error">Ingrese su nombre</span>';
  5.             }else if($_POST['email'] == '' or !preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/",$_POST['email'])){
  6.                 $errors[2] = '<span class="error">Ingrese un email correcto</span>';
  7.             }else if($_POST['asunto'] == ''){
  8.                 $errors[3] = '<span class="error">Ingrese un asunto</span>';
  9.             }else if($_POST['mensaje'] == ''){
  10.                 $errors[4] = '<span class="error">Ingrese un mensaje</span>';
  11.             }else{
  12.                 $dest = "[email protected]"; //Email de destino
  13.                 $nombre = $_POST['nombre'];
  14.                 $email = $_POST['email'];
  15.                 $asunto = $_POST['asunto']; //Asunto
  16.                 $cuerpo = $_POST['mensaje']; //Cuerpo del mensaje
  17.                 //Cabeceras del correo
  18.                 $headers = "From: $nombre $email \r\n"; //Quien envia?
  19.                 $headers .= "X-Mailer: PHP5 \r\n";
  20.                 $headers .= 'MIME-Version: 1.0' . "\r\n";
  21.                 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; //
  22.                 if(mail($dest,$asunto,$cuerpo,$headers)){
  23.                     $result = '<div class="result_ok">Email enviado correctamente </div>';
  24.                     // si el envio fue exitoso reseteamos lo que el usuario escribio:
  25.                     $_POST['nombre'] = '';
  26.                     $_POST['email'] = '';
  27.                     $_POST['asunto'] = '';
  28.                     $_POST['mensaje'] = '';
  29.                 }else{
  30.                     $result = '<div class="result_fail">Hubo un error al enviar el mensaje </div>';
  31.                 }
  32.             }
  33.         }
  34.     ?>
  35.         <form class='contacto' method='POST' action=''>
  36.             <div><label>Tu Nombre:</label><input type='text' class='nombre' name='nombre' value='<?php echo @$_POST['nombre']; ?>'><?php echo @$errors[1] ?></div>
  37.             <div><label>Tu Email:</label><input type='text' class='email' name='email' value='<?php echo @$_POST['email']; ?>'><?php echo @$errors[2] ?></div>
  38.             <div><label>Asunto:</label><input type='text' class='asunto' name='asunto' value='<?php echo @$_POST['asunto']; ?>'><?php echo @$errors[3] ?></div>
  39.             <div><label>Mensaje:</label><textarea rows='6' class='mensaje' name='mensaje'><?php echo @$_POST['mensaje']; ?></textarea><?php echo @$errors[4] ?></div>
  40.             <div><input type='submit' value='ENVIAR MENSAJE' class='boton' name='boton'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type='reset' value='BORRAR INFORMACIÓN' class='boton' name='boton2'></div>
  41.             <?php echo @$result; ?>
  42.         </form>

Lo consulte con el soporte técnico de Dattatec pero su respuesta fue:

Cita:
Estimado Usuario:

Le comunico que el error se presenta porque esta utilizando un salto de linea incorrecto, tenga presente que usted posee un plan bajo plataforma windows en donde el salto de linea no se representa con "\n" sino que debe hacerlo mediante "\r\n" , por favor tenga a bien consultar la ayuda oficial de la funcion mail() de php para mas informacion
Tenia un par de saltos de linea mal, pero los arregle e igualmente el error persiste, alguna solución? Gracias de antemano.
  #2 (permalink)  
Antiguo 14/02/2012, 17:48
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 6 meses
Puntos: 71
Respuesta: Problema con formulario de contacto, función mail ()

El error es muy claro, si no especificas una cuenta de correo válida el servidor SMTP rechaza el envio (para evitar spam, basicamente)
Asegurate que en $email es un email válido y el destino pues lo mismo.
  #3 (permalink)  
Antiguo 14/02/2012, 18:35
 
Fecha de Ingreso: mayo-2010
Mensajes: 53
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Problema con formulario de contacto, función mail ()

Muchas gracias, me acaban de constestar lo mismo el soporte de dattatec. Y me dijeron que agregue una linea:

ini_set(sendmail_from, '[email protected]')

Pero ahora me tira otro error:

Parse error: syntax error, unexpected T_IF in \\hmfsw\web\DTCWIN108\centroficch.com.ar\public_ht ml\contacto.php on line 208

La linea 208 es:

if(mail($dest,$asunto,$cuerpo,$headers)){

El código completo:

Código PHP:
Ver original
  1. <?php
  2.         if(isset($_POST['boton'])){
  3.             if($_POST['nombre'] == ''){
  4.                 $errors[1] = '<span class="error">Ingrese su nombre</span>';
  5.             }else if($_POST['email'] == '' or !preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/",$_POST['email'])){
  6.                 $errors[2] = '<span class="error">Ingrese un email correcto</span>';
  7.             }else if($_POST['asunto'] == ''){
  8.                 $errors[3] = '<span class="error">Ingrese un asunto</span>';
  9.             }else if($_POST['mensaje'] == ''){
  10.                 $errors[4] = '<span class="error">Ingrese un mensaje</span>';
  11.             }else{
  12.                 $dest = "[email protected]"; //Email de destino
  13.                 $nombre = $_POST['nombre'];
  14.                 $email = $_POST['email'];
  15.                 $asunto = $_POST['asunto']; //Asunto
  16.                 $cuerpo = $_POST['mensaje']; //Cuerpo del mensaje
  17.                 //Cabeceras del correo
  18.                 $headers = "From: $nombre $email \r\n"; //Quien envia?
  19.                 $headers .= "X-Mailer: PHP5 \r\n";
  20.                 $headers .= 'MIME-Version: 1.0' . "\r\n";
  21.                 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; //
  22.                 ini_set(sendmail_from, '[email protected]')
  23.                 if(mail($dest,$asunto,$cuerpo,$headers)){
  24.                     $result = '<div class="result_ok">Email enviado correctamente </div>';
  25.                     // si el envio fue exitoso reseteamos lo que el usuario escribio:
  26.                     $_POST['nombre'] = '';
  27.                     $_POST['email'] = '';
  28.                     $_POST['asunto'] = '';
  29.                     $_POST['mensaje'] = '';
  30.                 }else{
  31.                     $result = '<div class="result_fail">Hubo un error al enviar el mensaje </div>';
  32.                 }
  33.             }
  34.         }
  35.     ?>
  36.         <form class='contacto' method='POST' action=''>
  37.             <div><label>Tu Nombre:</label><input type='text' class='nombre' name='nombre' value='<?php echo @$_POST['nombre']; ?>'><?php echo @$errors[1] ?></div>
  38.             <div><label>Tu Email:</label><input type='text' class='email' name='email' value='<?php echo @$_POST['email']; ?>'><?php echo @$errors[2] ?></div>
  39.             <div><label>Asunto:</label><input type='text' class='asunto' name='asunto' value='<?php echo @$_POST['asunto']; ?>'><?php echo @$errors[3] ?></div>
  40.             <div><label>Mensaje:</label><textarea rows='6' class='mensaje' name='mensaje'><?php echo @$_POST['mensaje']; ?></textarea><?php echo @$errors[4] ?></div>
  41.             <div><input type='submit' value='ENVIAR MENSAJE' class='boton' name='boton'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type='reset' value='BORRAR INFORMACIÓN' class='boton' name='boton2'></div>
  42.             <?php echo @$result; ?>
  43.         </form>

No veo ningún error de sintaxis, ustedes?

EDIT: Ya lo solucione jaja me faltaba un ";" despues del ini_set

Última edición por kenyis01; 14/02/2012 a las 21:18
  #4 (permalink)  
Antiguo 14/02/2012, 23:35
 
Fecha de Ingreso: agosto-2011
Ubicación: España
Mensajes: 445
Antigüedad: 12 años, 7 meses
Puntos: 89
Respuesta: Problema con formulario de contacto, función mail ()

Se te ha olvidado añadir ; a la línea que te ha dado el soporte de tu hosting.

Vaya, después de "corregirte" el error me he dado cuenta que habías editado el post porque ya te habías percatado.

Etiquetas: contacto, formulario, html, mail, usuarios
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 23:29.