Foros del Web » Programando para Internet » PHP »

Duda mandando mail

Estas en el tema de Duda mandando mail en el foro de PHP en Foros del Web. Buenas tardes a todos! Bueno, resulta que quiero hacer un formulario para que mis usuarios se pongan en contacto conmigo atraves de mail. Como ya ...
  #1 (permalink)  
Antiguo 21/09/2006, 10:48
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 14 años, 8 meses
Puntos: 0
Duda mandando mail

Buenas tardes a todos!

Bueno, resulta que quiero hacer un formulario para que mis usuarios se pongan en contacto conmigo atraves de mail. Como ya se imaginaran tengo un formulario un un código php.

El código php es el siguiente:

Código PHP:
<?
$destinatario 
"[email protected]";
$asunto addslashes($_POST['asunto']);
$correo addslashes($_POST['correo']);
$mensaje addslashes($_POST['mensaje']);
$cuerpo '
<html>
<head>
   <title>Cont&aacute;cto desde web</title>
</head>
<body>
<b>El siguiente mensaje ha sido enviador por &eacute;l/la sr(a).: '
.addslashes($_POST['nombre']).'
</b><p>
'
.addslashes($mensaje).'
</p>
</body>
</html>
'
;

//HTML
$headers "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$headers .= "From: La Divina del Queso S.A de C.V. <[email protected]>\r\n";

//Dirección de respuesta
$headers .= "Reply-To: ".$correo."\r\n";

mail($destinatario,$asunto,$cuerpo,$headers)

?>
Sea tan amable de llenar todos los campos que acontinuaci&oacute;n se le presentan:<br /><br />
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
Nombre:<br />
<input name="nombre" type="text" size="50" maxlength="100" />
<br /><br />
Dirección de correo electr&oacute;nico:<br />
<input name="correo" type="text" size="30" maxlength="50" />
<br />
<span style="font-size:10px; font-family:Verdana, Arial, Helvetica, sans-serif;">(Por favor, introduzca su direcci&oacute;n de email correctamente, ya que a la direcci&oacute;n proporcionada, enviaremos la respuesta.)</span><br />
<br />
Asunto:<br />
<input name="asunto" type="text" size="30" maxlength="100" />
<br /><br />
Mensaje:<br />
<textarea name="mensaje" cols="50" rows="10"></textarea>
<br /><br />
<label>
<input type="submit" name="submit" value="Enviar">
</label>
</form>

<?

if (isset($_POST['submit'])) {

if (empty(
$nombre) || empty($asunto)  || empty($correo) || empty($mensaje))

{

echo 
"<b>* Debe llenar todos los campos del formulario. Rectif&iacute;que que as&iacute; lo &aacute;lla hecho.</b><br />";

}

else

{

echo 
"&iexcl;Su mensaje ha sido enviado con &eacute;xito! En breve recibira nuestra respuesta.";

}

}

?>
Bueno, algo así esta la cosa. Lo que pasa es que aun estando vacios los campos manda el mail vacio obviamente. ¿Como puedo hacer que al comprobar que los campos estan vacios no lo mande? También me gustaria saber por qué el mail llega dos veces.

Saludos a todos.
  #2 (permalink)  
Antiguo 21/09/2006, 10:50
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 16 años
Puntos: 89
Cámbialo por esto...

Código PHP:
<?
$destinatario 
"[email protected]";
$asunto addslashes($_POST['asunto']);
$correo addslashes($_POST['correo']);
$mensaje addslashes($_POST['mensaje']);
$cuerpo '
<html>
<head>
   <title>Cont&aacute;cto desde La Divina del Queso S.A. de C.V.</title>
</head>
<body>
<b>El siguiente mensaje ha sido enviador por &eacute;l/la sr(a).: '
.addslashes($_POST['nombre']).'
</b><p>
'
.addslashes(nl2br($mensaje)).'
</p>
</body>
</html>
'
;


if (isset(
$_POST['submit'])) {

if (empty(
$nombre) || empty($asunto)  || empty($correo) || empty($mensaje))

{

echo 
"<b>* Debe llenar todos los campos del formulario. Rectif&iacute;que que as&iacute; lo &aacute;lla hecho.</b><br />";

}

else

{

//para el envío en formato HTML
$headers "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

//dirección del remitente
$headers .= "From: La Divina del Queso S.A de C.V. <[email protected]>\r\n";

//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To: ".$correo."\r\n";

mail($destinatario,$asunto,$cuerpo,$headers)
}

}

?>
Sea tan amable de llenar todos los campos que acontinuaci&oacute;n se le presentan:<br /><br />
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
Nombre:<br />
<input name="nombre" type="text" size="50" maxlength="100" />
<br /><br />
Dirección de correo electr&oacute;nico:<br />
<input name="correo" type="text" size="30" maxlength="50" />
<br />
<span style="font-size:10px; font-family:Verdana, Arial, Helvetica, sans-serif;">(Por favor, introduzca su direcci&oacute;n de email correctamente, ya que a la direcci&oacute;n proporcionada, enviaremos la respuesta.)</span><br />
<br />
Asunto:<br />
<input name="asunto" type="text" size="30" maxlength="100" />
<br /><br />
Mensaje:<br />
<textarea name="mensaje" cols="50" rows="10"></textarea>
<br /><br />
<label>
<input type="submit" name="submit" value="Enviar">
</label>
</form>
Algo así sería...
  #3 (permalink)  
Antiguo 21/09/2006, 11:07
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 13 años, 5 meses
Puntos: 0
Cita:
Iniciado por spider_boy Ver Mensaje
Cámbialo por esto...

Código PHP:
<?
$destinatario 
"[email protected]";
$asunto addslashes($_POST['asunto']);
$correo addslashes($_POST['correo']);
$mensaje addslashes($_POST['mensaje']);
$cuerpo '
<html>
<head>
   <title>Cont&aacute;cto desde La Divina del Queso S.A. de C.V.</title>
</head>
<body>
<b>El siguiente mensaje ha sido enviador por &eacute;l/la sr(a).: '
.addslashes($_POST['nombre']).'
</b><p>
'
.addslashes(nl2br($mensaje)).'
</p>
</body>
</html>
'
;


if (isset(
$_POST['submit'])) {

if (empty(
$nombre) || empty($asunto)  || empty($correo) || empty($mensaje))

{

echo 
"<b>* Debe llenar todos los campos del formulario. Rectif&iacute;que que as&iacute; lo &aacute;lla hecho.</b><br />";

}

else

{

//para el envío en formato HTML
$headers "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

//dirección del remitente
$headers .= "From: La Divina del Queso S.A de C.V. <[email protected]>\r\n";

//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To: ".$correo."\r\n";

mail($destinatario,$asunto,$cuerpo,$headers)
}

}

?>
Sea tan amable de llenar todos los campos que acontinuaci&oacute;n se le presentan:<br /><br />
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
Nombre:<br />
<input name="nombre" type="text" size="50" maxlength="100" />
<br /><br />
Dirección de correo electr&oacute;nico:<br />
<input name="correo" type="text" size="30" maxlength="50" />
<br />
<span style="font-size:10px; font-family:Verdana, Arial, Helvetica, sans-serif;">(Por favor, introduzca su direcci&oacute;n de email correctamente, ya que a la direcci&oacute;n proporcionada, enviaremos la respuesta.)</span><br />
<br />
Asunto:<br />
<input name="asunto" type="text" size="30" maxlength="100" />
<br /><br />
Mensaje:<br />
<textarea name="mensaje" cols="50" rows="10"></textarea>
<br /><br />
<label>
<input type="submit" name="submit" value="Enviar">
</label>
</form>
Algo así sería...
Para mejorarlo ya q se pregunta si las variables están vacías... no es mejor lo siguiente? Se evitarían warnings por índices de variables no existentes ($_POST['loquesea']) ya q no han sido enviadas.

Código PHP:
<?php
if (isset($_POST['submit'])) {
    
//Una vez verificamos que el formulario ha sido enviado entonces asignamos las variables
$destinatario "[email protected]";
$asunto addslashes($_POST['asunto']);
$correo addslashes($_POST['correo']);
$mensaje addslashes($_POST['mensaje']);
$cuerpo '
<html>
<head>
   <title>Cont&aacute;cto desde La Divina del Queso S.A. de C.V.</title>
</head>
<body>
<b>El siguiente mensaje ha sido enviador por &eacute;l/la sr(a).: '
.addslashes($_POST['nombre']).'
</b><p>
'
.addslashes(nl2br($mensaje)).'
</p>
</body>
</html>
'
;
if (empty(
$nombre) || empty($asunto)  || empty($correo) || empty($mensaje))

{

echo 
"<b>* Debe llenar todos los campos del formulario. Rectif&iacute;que que as&iacute; lo &aacute;lla hecho.</b><br />";

}

else

{

//para el envío en formato HTML
$headers "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

//dirección del remitente
$headers .= "From: La Divina del Queso S.A de C.V. <[email protected]>\r\n";

//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To: ".$correo."\r\n";

mail($destinatario,$asunto,$cuerpo,$headers)
}

}

?>
Sea tan amable de llenar todos los campos que acontinuaci&oacute;n se le presentan:<br /><br />
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
Nombre:<br />
<input name="nombre" type="text" size="50" maxlength="100" />
<br /><br />
Dirección de correo electr&oacute;nico:<br />
<input name="correo" type="text" size="30" maxlength="50" />
<br />
<span style="font-size:10px; font-family:Verdana, Arial, Helvetica, sans-serif;">(Por favor, introduzca su direcci&oacute;n de email correctamente, ya que a la direcci&oacute;n proporcionada, enviaremos la respuesta.)</span><br />
<br />
Asunto:<br />
<input name="asunto" type="text" size="30" maxlength="100" />
<br /><br />
Mensaje:<br />
<textarea name="mensaje" cols="50" rows="10"></textarea>
<br /><br />
<label>
<input type="submit" name="submit" value="Enviar">
</label>
</form>
Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #4 (permalink)  
Antiguo 21/09/2006, 11:15
Avatar de the_scorpion  
Fecha de Ingreso: mayo-2006
Ubicación: Cuba
Mensajes: 696
Antigüedad: 13 años, 6 meses
Puntos: 3
Y me parece que aqui les falto un punto y coma (;) al final
Código PHP:
mail($destinatario,$asunto,$cuerpo,$headers
__________________
Que hablen mal de uno es espantoso. Pero hay algo peor: que no hablen.
Quien hace, puede equivocarse. Quien nada hace, ya está equivocado".
  #5 (permalink)  
Antiguo 21/09/2006, 11:16
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 14 años, 8 meses
Puntos: 0
Muchas gracias. Ya lo estoy checando. Imagine que tenia algo que ver con alguna sentencia más, pero me enrrede totalmente. xD

Gracias de nuevo, amigos.

Saludos.
  #6 (permalink)  
Antiguo 21/09/2006, 11:53
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 14 años, 8 meses
Puntos: 0
Bueno, pues ya lo revise y el problema es que siempre me dice que tengo quer llenar los campos aunque los alla llenado. Aparte que el mail llega aveces, no siempre. ¿Qué es lo que pasa?

Saludos.
  #7 (permalink)  
Antiguo 21/09/2006, 11:56
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 13 años, 5 meses
Puntos: 0
Eso es porque falta definir $nombre:

Código PHP:
$asunto addslashes($_POST['asunto']); 
$nombre addslashes($_POST['nombre']); //Por ponerlo en un buen sitio...
$correo addslashes($_POST['correo']); 
Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #8 (permalink)  
Antiguo 21/09/2006, 11:57
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 14 años, 10 meses
Puntos: 10
hola! q tal?
has mirado q las variables te lleguen bien?
impremelas con un echo a ver q te sale.
y una mania q tengo yo es usar isset para comprobar si esxiten las variables o no!

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #9 (permalink)  
Antiguo 21/09/2006, 12:06
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 14 años, 8 meses
Puntos: 0
Que bruto. xD En efecto, se me habia olvidado definir la variable "nombre". Bueno, ahora si ya quedo. Gracias a todos por su ayuda. =D

Saludos.
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.