entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Error en formulario PHP

Hola a todos.

Veréis, tengo en mi web un formulario de contacto en PHP, para que los visitantes me envíen mensajes y me lleguen al email.
Hasta hace poco me funcionaba muy bien.
El problema ha sido al intentar modificarlo, ya que me gustaría que enviara una copia oculta (CCO-BCC) a otro email.

El tema, es que según modifico el php, unas veces hace que no me llegue el email del remitente, y otras, directamente no me envía la copia al otro email.

Sin más preámbulos, os paso el código como esta ahora, que envía correctamente la copia, pero... no me llega el email del remitente, y en su lugar me indica "CGI-Mailer" con la dirección [email protected] ;

<p><?php mail('[email protected]'); ?>
<?php

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

$to = '[email protected]' ;
$subject = 'Formulario recibido de EstaWeb.com' ;

$message = 'Asunto: '.$_POST ["asunto"]."\n".'Nombre: '.$_POST ["nombre"]."\n".'Pais: '.$_POST ["pais"]."\n".'Telefono: '.$_POST["telefono"]."\n".'Ciudad: '.$_POST["ciudad"]."\n".'Conocio: '.$_POST["conocio"]."\n".'Mensaje: '.$_POST["mensaje"];
$headers = 'From: ' . $_POST[ "from" ] . PHP_EOL ;
$headers = 'Bcc: [email protected]' ;  
mail ( $to, $subject, $message, $headers ) ;

echo "¡Se ha enviado tu e-mail!" ;}

else{
?>
<form method= "post" action= "<?php echo $_SERVER [ 'PHP_SELF' ] ;?>" >

Sin más, muchas gracias por adelantado.

1 Respuesta

1voto

Leonardo-Tadei Puntos227320

Hola @serodallo,

tu problema está en que en vez de agregar a la variable $headers la cadena para el BCC, la estás sobreescribiendo, con lo que perdés el valor del FROM.

Eso hace que el mail vaya al segundo correo, pero nunca al primero.

Deberías hacer:

...
$headers = 'From: ' . $_POST[ "from" ] . PHP_EOL ;
$headers .= 'Bcc: [email protected]' ;  
...

que es una forma abreviada de escribir:

...
$headers = 'From: ' . $_POST[ "from" ] . PHP_EOL ;
$headers = $headers . 'Bcc: [email protected]' ;  
...

Como nota adicional, no es buena idea que el FROM se escriba en el formulario, porque en ese caso se podría enviar mail que parecería ser de un sitio, cuando en realidad es de otro.

Saludos cordiales

1voto

serodallo comentado

Muchas gracias por tu respuesta.

Me ha funcionado, pero tengo una duda:

Al principio de la programación indico esto:

<p><?php mail('[email protected]'); ?>

¿Sirve de algo o lo puedo borrar?

1voto

FelipeMedel comentado

pues en tu caso, podrías borrarlo ya que mas abajo lo estas utilizando con los datos del mensaje que vas a enviar.

mail ( $to, $subject, $message, $headers ) ;

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta