Enviar formulario a correo

Iniciado por lluk, 6 Agosto 2010, 01:51 AM

0 Miembros y 2 Visitantes están viendo este tema.

lluk

Hola a todos hace tiempo que busco algun script para enviar un formulario por correo electronico pero me refiero ha que yo lo envio y el que recibe el mail lo contesta y se me envia la respuesta a algun archivo .txt que tenga por internet. Tambien necesito que el remitente del mail sea el que yo quiera. estuve buscando por internet y encontre esto:

<?php
$aviso 
"";
// check form  
if ($_POST['email'] != "") {
// email de destino
$email "emailde@destino.com";

// asunto del email
$subject "Prueba";

// Cuerpo del mensaje
$mensaje "---------------------------------- \n";
$mensaje.= "            Contacto               \n";
$mensaje.= "---------------------------------- \n";
$mensaje.= "NOMBRE:   ".$_POST['nombre']."\n";
$mensaje.= "EMPRESA:  ".$_POST['empresa']."\n";
$mensaje.= "EMAIL:    ".$_POST['email']."\n";
$mensaje.= "TELEFONO: ".$_POST['telefono']."\n";
$mensaje.= "FECHA:    ".date("d/m/Y")."\n";
$mensaje.= "HORA:     ".date("h:i:s a")."\n";
$mensaje.= "IP:       ".$_SERVER['REMOTE_ADDR']."\n\n";
$mensaje.= "---------------------------------- \n\n";
$mensaje.= $_POST['mensaje']."\n\n";
$mensaje.= "---------------------------------- \n";
$mensaje.= "Enviado desde http://www.miweb.es \n";

// headers del email
$headers "From: ".$_POST['email']."\r\n";

// Enviamos el mensaje
if (mail($email$subject$mensaje$headers)) {
$aviso "Su mensaje fue enviado correctamente";
} else {
$aviso "Error de envío";
}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Enviar Email con PHP - unijimpe</title>
<style type="text/css">
body {
margin: 16px;
padding: 0;
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
font-size: 12px;
color: #333;
}
input, textarea {
float: left;
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
font-size: 12px;
color: #333;
padding: 2px;
width: 250px;
margin-bottom: 4px;
}
label {
float: left;
width: 100px;
}
button {
width: 80px;
background: #333;
color: #FFF;
padding: 3px 8px;
}
form {
border: solid 1px #CCC;
background: #efefef;
padding: 16px;
width: 380px;
}
br { clear: both; }
em { color: red; } 
</style>
</head>
<body>
<h2>Enviar Email con PHP</h2>
<?php if ($aviso != "") { ?>
<p><em><?php echo $aviso?></em></p>
<?php ?>
<form action="" method="post">
    <label for="nombres">Nombres</label> <input name="nombre" id="nombre" type="text" /><br />
    <label for="empresa">Empresa</label> <input name="empresa" id="empresa" type="text" /><br />
    <label for="email">Email</label> <input name="email" id="email" type="text" /><br />
    <label for="telefono">Telefono</label> <input name="telefono" id="telefono" type="text" /><br />
    <label for="mensaje">Mensaje</label> <textarea name="mensaje" cols="30" rows="6"></textarea><br />
    <label for="btsend">&nbsp;</label> <button name="btsend" id="btsend" type="submit">Enviar</button>
</form>
</body>
</html>


haber si alguien me explica como puedo modificar el codigo para hacer eso o si me puede pasar algun otro codigo =)

gracias de antemano

Ari Slash

explicate mejor,sobre el envio de correo y archivo de text no se de que  :huh:

donde estas probando este php, en un servidor web en tu pc?
en un servidor contratado? cpanel?


saludos

lluk

mira ya se que no me explique muy bien pero yo quiero enviar un correo con un remitente falso. Lo que quiero hacer es enviar un formulario que cuando finalicen el formulario se me envien todos los campos a un email o que se queden guardados en un archivo .txt que ya tenga subido en mi servidor web.

P.D. no se si me explicado bien xdd

#!drvy

Espero que sepas lo minimo de php y html porque sino te va a ser bastante jodido :P

para empezar necesitas 2 archivos (3 con el que vas a guardar los datos). El mail.php que servira para enviar el email y el recive.php con el que recibiras la informacion.

el mail.php contendra esto:
Código (php) [Seleccionar]
<?php
// drvy bsm
if (isset($_POST['hacia'],$_POST['subjeto'],$_POST['mensaje'],$_POST['desde'])) 
{print 
enviar_mail($_POST['hacia'],$_POST['subjeto'],$_POST['mensaje'],$_POST['desde']);} else {print 'Todos los campos son obligatorios';}

function 
enviar_mail($hacia,$subjeto,$mensaje,$desde)
{

$cabeceras "From: " strip_tags($_POST['desde']) . "\r\n";
$cabeceras .= "MIME-Version: 1.0\r\n";
$cabeceras .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
if (mail($hacia,$subjeto,$mensaje,$cabeceras)) {print 'Email enviado';} else {print 'Email no enviado';}
}
?>

<html>
<head>
<title>WIKI WIKI [drvy|BSM]</title>
</head>
<body>
<center>
<form action="" method="POST">
<input type="text" name="hacia" value="destinario@destino.com">
<br /><input type="text" name="subjeto" value="subjeto">
<br /><textarea name="mensaje">Texto...</textarea>
<br /><input type="text" name="desde" value="mailfalso@mailfalso.com">
<br /><input type="submit" value="Enviar">
</form>
</center>
</body>
</html>


el recive.php esto:
Código (php) [Seleccionar]
<?php
$ruta 
'datos.txt';
if(isset(
$_POST['k_nombre'])) {$nombre $_POST['k_nombre'];} else {$nombre 'NoIntroducido';}
if(isset(
$_POST['k_cuidad'])) {$cuidad $_POST['k_cuidad'];} else {$cuidad 'NoIntroducido';}
if(isset(
$_POST['k_pais'])) {$pais $_POST['k_pais'];} else {$pais 'NoIntroducido';}
if(isset(
$_POST['k_email'])) {$email $_POST['k_email'];} else {$email 'NoIntroducido';}
if(isset(
$_POST['k_telefono'])) {$telefono $_POST['k_telefono'];} else {$telefono 'NoIntroducido';}

function 
escribir_en($ruta,$nombre,$cuidad,$pais,$email,$telefono)
{
$archivo fopen($ruta,'a+');
fwrite($archivo,$nombre.' | '.$cuidad.' | '.$pais.' | '.$email.' | '.$telefono."\r\n");
fclose($archivo);
return true;
}

escribir_en($ruta,$nombre,$cuidad,$pais,$email,$telefono);
?>

Puedes cambiar la variable $ruta por un archivo con un nombre que te de la gana.

Y el formulario (de prueba) que tienes que enviar mas o menos contiene esto:
Código (html4strict) [Seleccionar]
<html>
<center>
<h1> Rellene este formulario </h1>
<span>Todos los campos son obligatorios!</span>
<form action="http://dominio.com/mail/recive.php" method="POST">
<table>
<tr><td>Nombre:</td><td><input type="text" name="k_nombre"></td></tr>
<tr><td>Cuidad:</td><td><input type="text" name="k_cuidad"></td></tr>
<tr><td>Pais:</td><td><input type="text" name="k_pais"></td></tr>
<tr><td>Email:</td><td><input type="text" name="k_email"></td></tr>
<tr><td>Telefono:</td><td><input type="text" name="k_telefono"></td></tr>
<tr><td>Enviar:</td><td><input type="submit" value="Enviar"></td></tr>
</table>
</form>
</center>


lo mas importante ahi es el..
Código (html4strict) [Seleccionar]
<form action="http://dominio.com/mail/recive.php" method="POST">
que es donde tendras que introducir tu dominio y donde alojas el archivo recive.php.

Una vez que hayas enviado el email y el cliente lo haya rellenado te vas a tu servidor buscas el archivo donde se guardan los datos y los ves :P . Como dije si no tienes ni **** idea de esto mejor ni lo hagas.

PD: Tambien se puede combinar en un solo archivo pero pa eso ya colores y gustos :P

Saludos

lluk

ok gracias por el script aunque aun no lo he provado porque estoy con el internet de movistar y mi conexion va a 1kb/ps xdd y no me deja subir archivos a ningun servidor asi que lo probare con localhost aunque no creo que funcione

gracias ;)

#!drvy

Obviamente en localhost no funcionara a no ser que tengas instalado un servidor smtp.




Saludos

lluk

#6
lo probe en localhost uso xampp y tenia el mercury y el apache activados y me ponia que se habia enviado el mensaje pero nunca llegaba al destinatario. Despues lo probe con webcindario pero me ponia mensaje no enviado =mente no se si tiene smtp

edito: lo pude enviar desde localhost pero el problema esque solo se envia el texto y no el formulario no entiendo porque?
si me puedes volver a ayudar te lo agradeceria

#!drvy

Los hosting gratuitos no suelen ser muy hospitalarios en temas de smtp XD.
Como envias exactamente el correo ?
prueba con ::www.000webhost.com/



Saludos

lluk

bueno como no me funcionaba decidi crear mi script en php.
lo voy a poner para que lo veas y me ayudes y me aconsejes (ya que solo hace 10 dias que empeze con php xd aunque antes estudiaba C y creo que son dos lenguajes muy parecidos.
aqui el codigo:

<?php
$destino 
"destinatario@hotmail.com"//creamos una variable donde ponemos el email del destinatario
$asunto "Asunto de prueba"//creamos una variable donde ponemos el asunto
$mensaje "<table>
<form method=post>
<tr><td>Nombre:</td><td><input name=nombre type=text></td></tr>
<tr><td>Ciudad</td><td><input name=pass type=password></td></tr>
<tr><td>Email alternativo:</td><td><input name=email type=text></td></tr>
<tr><td>Fecha de nacimiento:</td><td><input name=fecha type=fecha></td></tr>
<tr><td>Enviar:</td><td><input value=Enviar type=submit></td></tr>
</form>
</table>"

/*creamos una variable donde pondremos el asunto del mensaje en este caso hemos
 creado un formulario para enviar y en la primera linea del form necesito ayuda con
 el action porque no se que hacer para que cuando se termine se me envien los datos
*/
$cabeceras "From:remitente@remitente.com\nContent-Type: text/html; charset=iso-8859-1"
/*
aqui van las cabeceras con From: indicamos el remitente
con la \n indicamos salto de linia
con Content-Type: text... hacemos que se puedan añadir mensajes 
*/
mail($destino,$asunto,$mensaje,$cabeceras) or die ("El mensaje no se pudo enviar");
echo (
"El mensaje se ha enviado correctamente");
/* 
con esto ultimo enviamos el mensaje (cogemos todas las variables y las ponemos en su respectivo orden.
con or die veremos en pantalla: El mensaje no se pudo enviar y si se pudo enviar mostraremos: El mensaje se ha enviado correctamente
*/
?>



necesito ayuda con la parte del formulario porque nose que hacer para que se me envien los datos del formulario al pulsar el boton enviar

Dznp

Para que se envie a determinado archivo se pone "action", quedaria así...

Código (html4strict) [Seleccionar]
<table>
<form method=post action="">
<tr><td>Nombre:</td><td><input name=nombre type=text></td></tr>
<tr><td>Ciudad</td><td><input name=pass type=password></td></tr>
<tr><td>Email alternativo:</td><td><input name=email type=text></td></tr>
<tr><td>Fecha de nacimiento:</td><td><input name=fecha type=fecha></td></tr>
<tr><td>Enviar:</td><td><input value=Enviar type=submit></td></tr>
</form>
</table>


En ese caso se enviaria al mismo archivo, usando isset(en php) podrias hacer que se envie dependiendo si se envio o no algun dato por POST