Foros del Web » Programando para Internet » PHP »

Mail con PHP

Estas en el tema de Mail con PHP en el foro de PHP en Foros del Web. Estoy utilizando un pequeño script que he encontrado en la red para mandar un sencillo formulario en PHP, que se los pongo aqui: <html> <head> ...
  #1 (permalink)  
Antiguo 29/03/2006, 14:45
Avatar de Ciberdanny  
Fecha de Ingreso: marzo-2005
Ubicación: Distrito Federal
Mensajes: 204
Antigüedad: 12 años, 8 meses
Puntos: 1
Pregunta Mail con PHP

Estoy utilizando un pequeño script que he encontrado en la red para mandar un sencillo formulario en PHP, que se los pongo aqui:

<html>
<head>
<title>Mándanos tus comentarios</title>
</head>

<body bgcolor="#cccc66" text="#003300" link="#006060" vlink="#006060">
<?
if (!$HTTP_POST_VARS){
?>
<form action="envia_form_php.php" method=post>
Nombre: <input type=text name="nombre" size=16>
<br>
Email: <input type=text name=email size=16>
<br>
Comentarios: <textarea name=coment cols=32 rows=6></textarea>
<br>
<input type=submit value="Enviar">
</form>
<?
}else{
//Estoy recibiendo el formulario, compongo el cuerpo
$cuerpo = "Formulario enviado\n";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
$cuerpo .= "Email: " . $HTTP_POST_VARS["email"] . "\n";
$cuerpo .= "Comentarios: " . $HTTP_POST_VARS["coment"] . "\n";

//mando el correo...
mail("[email protected]","Formulario recibido",$cuerpo);

//doy las gracias por el envío
echo "Gracias por rellenar el formulario. Se ha enviado correctamente.";
}
?>
</body>
</html>


El problema que tengo es que cuando me llega el correo me apqrece como remitente ROOT y la direccion SMTP de la compañia de hosting, ¿como le puedo hacer para que salga un correo que yo quiera?.

Ya he intentado meter el From: pero no funciona o no se como va

Por favor alguien que me ayude
  #2 (permalink)  
Antiguo 29/03/2006, 14:51
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.062
Antigüedad: 13 años, 6 meses
Puntos: 775
Podrías probar colocar ob_start(); inmediatamente después de <?php, al principio de tu página y ob_end_flush(); inmediatamente antes de ?> al final de tu página. No es lo óptimo porque consume más recursos, pero en tu caso quizá funcione.
  #3 (permalink)  
Antiguo 29/03/2006, 19:50
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.062
Antigüedad: 13 años, 6 meses
Puntos: 775
Perdoná, no sé qué pasó: esa respuesta era para otro mensaje. Para lo tuyo, tendrías que agregar un header from.
La manera en que tendrías que usar la función mail debería ser algo como esto:
Código PHP:
$headers "Reply-To: [email protected]\r\n"
$headers .= "From: un nombre <[email protected]>\r\n";
mail('[email protected]','titulodelmensaje','contenidodelmensaje',$headers); 
  #4 (permalink)  
Antiguo 30/03/2006, 19:03
Avatar de Ciberdanny  
Fecha de Ingreso: marzo-2005
Ubicación: Distrito Federal
Mensajes: 204
Antigüedad: 12 años, 8 meses
Puntos: 1
Ok.

Jeje, si fijate que lo probe y pues ya te imaginaras.

Oye, pero tengo un problema, ya probe lo que tu me dices pero no me funciona o no se donde meterlo, me podrias ampliar un poco la explicacion, sucede que ahora mi codigo esta asi:

Pongo solo el php:

<?
}else{
BEGIN__VBULLETIN__CODE__SNIPPET
$headers = "Reply-To: [email protected]\r\n";
$headers .= "From: Remitente <[email protected]>\r\n";
$cuerpo = "Formulario enviado\n";
$cuerpo .= "Nombre: " . $HTTP_POST_VARS["nombre"] . "\n";
$cuerpo .= "Pais: " . $HTTP_POST_VARS["pais"] . "\n";
$cuerpo .= "Correo: " . $HTTP_POST_VARS["correo"] . "\n";
$cuerpo .= "Comentarios: " . $HTTP_POST_VARS["comentario"] . "\n";
mail('[email protected]','Formulario recibido','$cuerpo',$headers);
echo "<META HTTP-EQUIV=Refresh CONTENT=0;URL=http://pagina.com/pagina.htm>";
}
?>

Y esque la verdad un no entiendo la logica de este codigo, por lo tanto no tengo ni idea de donde va lo que me dices, yo lo puse segun como mi criterio me dijo, pero creo que esta bastante mal, por favor solo dime donde colocar eso que dices, muchas gracias por tu ayuda de antemano...
  #5 (permalink)  
Antiguo 30/03/2006, 19:19
 
Fecha de Ingreso: enero-2006
Ubicación: Satiago Chile
Mensajes: 15
Antigüedad: 11 años, 10 meses
Puntos: 0
podrias provar con este:
creas el archivo contacto.htm

Código:
  <form method="POST" action="envia.php">
          <table width="300" border="0" cellpadding="0" cellspacing="4">
            <tr>
              <td width="109"><div align="center">Nombre:</div></td>
              <td width="179" colspan="2"><input name="Nombre" type="text" class="formu" title="Ingrese su Nombre"id="Nombre"></td>
            </tr>
            <tr>
              <td><div align="center">E-mail: </div></td>
              <td colspan="2"><input name="email" type="text" class="formu" title="Ingrese su E-mail" id="email"></td>
            </tr>
            <tr>
              <td valign="top"><div align="center">Tel&eacute;fono:</div></td>
              <td colspan="2"><input name="fono" type="text" class="formu" title="Ingrese un telefono de Contacto" id="fono"></td>
            </tr>
            <tr>
              <td valign="top"><div align="center">Mensaje: </div></td>
              <td colspan="2"><textarea rows="5" name="mensaje" title="Ingrese su Mensaje" class="formu" cols="25"></textarea></td>
            </tr>
            <tr>
              <td> <div align="center"></div></td>
              <td><input type="submit" value="Enviar" title="Enviar Formulario" class="button" name="enviar"></td>
              <td><input type="reset" value="Borrar" title="Borrar Datos del Formulario" class="button" name="borrar"></td>
            </tr>
          </table>
      </form>

ahora crear el archivo ke envia en formulario ke llamaras envia.php

Código PHP:
<?php

//E-mail en donde se recibirá el Formulario.

$recipiente "[email protected]";

//URL de tu Sitio Web.

$sw "la_direccion_de_tusitio.algo";

//Mensaje que te llegará al Correo, con los datos ingresados.

$msg "El Sr: $Nombre, envia el formulario con los siguientes datos:\n\n\n\n

 Nombre: $Nombre
 Email:  $email
 Fono:  $fono
 Mensaje:
$mensaje\n\n"
;

//Comprobamos que los campos del formulario se encuentren completos.

if (empty($Nombre)){
echo 
"<p align=center><font face=tahoma size=2><b><font color=#FF0000>Error:</font> No ha
ingresado su Nombre.</b></font></p>"
;
}
if(empty(
$email)){
echo 
"<p align=center><font face=tahoma size=2><b><font color=#FF0000>Error:</font> No ha
ingresado su E-mail.</b></font></p>"
;
}
if(empty(
$fono)){
echo 
"<p align=center><font face=tahoma size=2><b><font color=#FF0000>Error:</font> No ha
ingresado su Telefono.</b></font></p>"
;
}
if(empty(
$mensaje)){
echo 
"<p align=center><font face=tahoma size=2><b><font color=#FF0000>Error:</font> No ha
ingresado su Mensaje.</b></font></p>"
;
}else{

//Limpiamos de posibles ataques.

$mensaje ereg_replace("\r\n","<br>"$mensaje);

$Nombre htmlentities($Nombre);
$email htmlentities($email);
$fono htmlentities($fono);
$mensaje htmlentities($mensaje);

//Enviamos el E-mail con todos los datos.

mail("$recipiente""Contacto Web""$msg""FROM: $email");

//Damos las gracias al visitante por contactarnos.

echo"<font face=tahoma size=2>
<p align=center>Señor/es <b>$Nombre</b>.
<p align=center>Respondere su mensaje en un plazo maximo de 12 horas.<br>
</p>
<p align=center><br>
<a href=$sw>Regresar al Home</a>.</p>"
;
}
?>
Saludos

espero te sirva..
__________________
Lord Nazka
Diseño - Web - Multimedia
http://www.maxnorambuena.com
Wiiii!!!! :si:
  #6 (permalink)  
Antiguo 30/03/2006, 19:36
Avatar de Ciberdanny  
Fecha de Ingreso: marzo-2005
Ubicación: Distrito Federal
Mensajes: 204
Antigüedad: 12 años, 8 meses
Puntos: 1
De acuerdo Perfeeecto

Oye esta perfecto , funciono muy bien, ya solo con unos pocos cmbiecillos y quedo mas que perfecto para lo que lo necesitaba, muchas gracias por tu ayuda.




  #7 (permalink)  
Antiguo 30/03/2006, 19:39
 
Fecha de Ingreso: enero-2006
Ubicación: Satiago Chile
Mensajes: 15
Antigüedad: 11 años, 10 meses
Puntos: 0
:-) por nada..

Que bueno que funciono perfect... esque me di cuanta ke estabas dandote muchas vueltas con con otro... que abias postiado .. ;)
Saludos..
__________________
Lord Nazka
Diseño - Web - Multimedia
http://www.maxnorambuena.com
Wiiii!!!! :si:
  #8 (permalink)  
Antiguo 31/03/2006, 03:27
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 11 años, 9 meses
Puntos: 0
Va de lujo este formulario un saludo y gracias.
  #9 (permalink)  
Antiguo 31/03/2006, 05:08
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 11 años, 9 meses
Puntos: 0
Tengo una dudilla de este script de mandar correo, me funciona pero querria hacer una variacion a ver si alguien me puede ayudar. De esta ultima parte donde das las gracias por enviar el formulario...

//Damos las gracias al visitante por contactarnos.

echo"<font face=tahoma size=2>
<p align=center>Señor/es <b>$Nombre</b>.
<p align=center>Respondere su mensaje en un plazo maximo de 12 horas.<br>
</p>
<p align=center><br>
<a href=$sw>Regresar al Home</a>.</p>";
}
?>

en vez de salirte una echo dandote un mensaje me gustaria que saltara otra pagina HTML y ahi sacar el mensaje pero no se que sintaxis poner para que me cargue la pagina, Gracias.
  #10 (permalink)  
Antiguo 31/03/2006, 05:55
Avatar de ludovico2000  
Fecha de Ingreso: noviembre-2003
Ubicación: Bizkaia
Mensajes: 1.315
Antigüedad: 14 años, 1 mes
Puntos: 2
Para eso, basta con que no pongas echo, sino que cierres el php ?> y pongas código html. Para presentar datos que vienen del form puedes hacer:

?>
<HEAD>
<SCRIPT>
alert('Los datos han sido enviados con éxito\nA continuación se muestra el formulario completo\npara que lo pueda imprimir');
</SCRIPT>
</HEAD>
<BODY>
<div align='left' left='0'>
<FORM name='formu'>
<table width='770' cellspacing='0' cellpadding='0' align='center'>
<tr>
<td>
<font face='Verdana' size='2' color='#0000FF'>Código:</font>&nbsp;
<INPUT NAME='codigo' size='100' style='border:0px; font size:10;' readonly value='<?php echo $_POST['codigo']; ?>' />
...
</td></tr>
</table>
</form>
</dv>
</body>
</HTML>
<?
?>

En lo rojo, vuelvo a php para que saque el valor ingresado anteriormente en el form.





.
  #11 (permalink)  
Antiguo 31/03/2006, 06:56
Avatar de Javiglez  
Fecha de Ingreso: marzo-2006
Ubicación: Valladolid
Mensajes: 496
Antigüedad: 11 años, 9 meses
Puntos: 0
Gracias a ver si me sale, saludos
  #12 (permalink)  
Antiguo 31/03/2006, 11:56
Avatar de Ciberdanny  
Fecha de Ingreso: marzo-2005
Ubicación: Distrito Federal
Mensajes: 204
Antigüedad: 12 años, 8 meses
Puntos: 1
Una Opcion Más...

Bueno, pues que bueno que mi duda ha servido a mas de uno.

Y pues continuando con la ultima pregunta que se hizo acerca de que en lugar de cargar un mensaje de gracias al visitante que cargue una pagina pues -ademas de otras variaciones- precisamente esa era una de las variaciones que a mie minteresaba, te pongo aqui lo que yo hice, por ahi a alguien le ha de servir seguramente:

te pongo solo la parte final del script, solo con sustituir el que tienes por este (desde donde empìeza el echo, buieno ya sabras donde sustituir:

...

mail("$recipiente", "Contacto Web", "$msg", "FROM: $email");
{
echo "<META HTTP-EQUIV=Refresh CONTENT=0;URL=http://url.pagina a cargar.html>";
}
?>


Bueno, pues esta variacion a mi me quedo de lujo, espero tambien te sirva o a los demás.


Saludos!!!
  #13 (permalink)  
Antiguo 21/04/2006, 15:22
Avatar de Felipe Torres  
Fecha de Ingreso: abril-2006
Mensajes: 81
Antigüedad: 11 años, 7 meses
Puntos: 1
Saludos:

Aprovechando este script ¿Como puedo hacer que todo este paso se haga en una sola pagina y no tener que hacer dos paginas diferentes?

Gracias

Felipe
  #14 (permalink)  
Antiguo 21/04/2006, 15:46
Tew
 
Fecha de Ingreso: enero-2006
Mensajes: 1.562
Antigüedad: 11 años, 11 meses
Puntos: 17
poniendo todo el codigo en una sola pagina, y en el action del formulario poniendo el nombre de dicha pagina...

Última edición por Tew; 21/04/2006 a las 16:05
  #15 (permalink)  
Antiguo 21/04/2006, 16:36
Avatar de Felipe Torres  
Fecha de Ingreso: abril-2006
Mensajes: 81
Antigüedad: 11 años, 7 meses
Puntos: 1
Hola Tew:

¿Te refieres a que el action manda llamar a la pagina a si misma?

Ok, dejame intentarlo y te aviso que paso.

Gracias
  #16 (permalink)  
Antiguo 21/04/2006, 17:34
 
Fecha de Ingreso: enero-2006
Ubicación: Satiago Chile
Mensajes: 15
Antigüedad: 11 años, 10 meses
Puntos: 0
Aviza si lo lograste.. ;)
__________________
Lord Nazka
Diseño - Web - Multimedia
http://www.maxnorambuena.com
Wiiii!!!! :si:
  #17 (permalink)  
Antiguo 21/04/2006, 19:17
Tew
 
Fecha de Ingreso: enero-2006
Mensajes: 1.562
Antigüedad: 11 años, 11 meses
Puntos: 17
Cita:
Iniciado por Felipe Torres
Hola Tew:

¿Te refieres a que el action manda llamar a la pagina a si misma?

Ok, dejame intentarlo y te aviso que paso.

Gracias
Eso mismo. Aunke tb deberias comprobar ke envio el formulario antes de intentar procesar los datos... De todsa formas supongo ke te funcionara, al menos a mi me ha funcionado hasta ahora, aunke ya empiezo a hacer dichas comprobaciones
  #18 (permalink)  
Antiguo 24/04/2006, 10:13
Avatar de Felipe Torres  
Fecha de Ingreso: abril-2006
Mensajes: 81
Antigüedad: 11 años, 7 meses
Puntos: 1
Hola a todos, les comento:

Junte los dos codigos, pero por alguna razon que todavia no entiendo, antes de que se llene el formulario, el mail ha sido enviado ¿cual puede ser mi error?

Saludos.
  #19 (permalink)  
Antiguo 24/04/2006, 10:16
Avatar de Felipe Torres  
Fecha de Ingreso: abril-2006
Mensajes: 81
Antigüedad: 11 años, 7 meses
Puntos: 1
Por cierto, tengo otras dudas:

Si tengo el texto en un archivo de word, con un formato especifico, lo copio y lo pego en mi formulario y se guarda en la bd; hasta aqui bien, el problema viene cuando mando llamar el campo almacenado y lo muestro en el mail todo sin formato original. La pregunta ¿Como puedo mantener el formato original del texto, es decir, tabulaciones, saltos de linea, viñetas etc?

Gracias
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 15:03.