Foros del Web » Programando para Internet » PHP »

Enviar mail al finalizar fomulario

Estas en el tema de Enviar mail al finalizar fomulario en el foro de PHP en Foros del Web. hola, estoy haciendo un formulario y queria que al terminarl el formulario y darle a "registrar" ademas de que se guarde en la base de ...
  #1 (permalink)  
Antiguo 03/08/2010, 11:58
 
Fecha de Ingreso: agosto-2010
Mensajes: 5
Antigüedad: 13 años, 8 meses
Puntos: 0
Enviar mail al finalizar fomulario

hola, estoy haciendo un formulario y queria que al terminarl el formulario y darle a "registrar" ademas de que se guarde en la base de datos enviara un email al que ha completado el formulario, y llevo ya un buen rato mirando tutoriales y demas ejemplos de como hacerlo y es que no lo puedo hacer.

Les dejo el codigo por si me pueden ayudar

Código:
if($_POST[enviar]) {
	require 'config.php' ;
	function quitar($texto) {
		$texto = trim($texto) ;
		$texto = htmlspecialchars($texto) ;
		$texto = str_replace(chr(160),'',$texto) ; 
		return $texto ;
	}
	$nombre = quitar($_POST[nombre]) ;
	$email = quitar($_POST[email]) ;
	$sexo = quitar($_POST[sexo]) ;
	$pais = quitar($_POST[pais]) ;
	$provincia = quitar($_POST[provincia]) ;
	$ciudad = quitar($_POST[ciudad]) ;
	$telefono = quitar($_POST[telefono]) ;
	$dia = quitar($_POST[dia]) ;
	$mes = quitar($_POST[mes]) ;
	$anio = quitar($_POST[anio]) ;
	$con = mysql_query("select count(id) from usuarios where nombre='$telefono' or email='$email'") ;
	if(mysql_result($con,0,0)) {
		echo 'El Telefono ya existe en la base de datos o ya está registrado el email. Haz click <a href="javascript:history.back(-1)">aquí</a> para regresar.' ;
	}
	else {
		$fecha = time() ;
		$apellido = quitar($_POST[apellido]) ;
		mysql_query("insert into usuarios (fecha,nombre,apellido,sexo,pais,provincia,ciudad,telefono,dia,mes,anio,email,ip) values ('$fecha','$nombre','$apellido','$sexo','$pais','$provincia','$ciudad','$telefono','$dia','$mes','$anio','$email','$_SERVER[REMOTE_ADDR]')") ;
        echo 'Has sido registrad@ satisfactoriamente. Haz click <a href="registrar.php">aquí</a> para regresar a la página principal.' ;
	}
}
else {
?>

<script>
function revisar() {
	if(formulario.nombre.value.length < 3) {
		alert('Debes escribir tu nombre.') ;
		return false ;
	}
	if(formulario.apellido.value.length < 3) {
		alert('Debes escribir tu apellido.') ;
		return false ;
	}
	if(formulario.sexo.value.option) {
		alert('Selecciona tu Sexo') ;
		return false ;
	}
	if(formulario.pais.value.option) {
		alert('Debes seleccionar tu pais de residencia.') ;
		return false ;
	}
	if(formulario.provincia.value.option) {
		alert('Debes seleccionar tu provincia .') ;
		return false ;
	}
	if(formulario.ciudad.value.length < 3) {
		alert('Debes escribir la ciudad donde vives.') ;
		return false ;
	}
	if(formulario.telefono.value.length < 3) {
		alert('Debes escribir un numero de telefono') ;
		return false ;
	}
	if(formulario.dia.value.option ) {
		alert('Debes introducir un dia') ;
		return false ;
	}
	if(formulario.mes.value.option ) {
		alert('Debes introducir un mes') ;
		return false ;
	}
	if(formulario.anio.value.option ) {
		alert('Debes introducir un año') ;
		return false ;
	}
	if(!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(formulario.email.value)) {
		alert('Debes poner un email válido.') ;
		return false ;
	}
}
</script>
<body bgcolor="" background="">
<div align="center"><br>
</div>
<form name="formulario" method="post" action="<?=$_SERVER[PHP_SELF]?>" onSubmit="return revisar()">
  <div align="center"><b><em><font color="#000000">Nombre:</font></em></b><br>
    <input type="text" name="nombre" maxlength="20">
    <br>
    <b><em><font color="#000000">Apellido:</font></em></b><br>
    <input type="text" name="apellido" maxlength="10">
    <br>
	<b><em><font color="#000000">Sexo:</font></em></b><br>
    <select name="sexo"><option>Masculino</option><option>Femenino</option></select>
	<br>
	<b><em><font color="#000000">Pais:</font></em></b><br>
    <select name="pais"><option>España</option></select>
    <br>
	<b><em><font color="#000000">Provincia:</font></em></b><br>
    <select name="provincia">
	<option>Araba</option>
<option>Albacete</option>
<option>Alacant</option>
<option>Almería</option>
<option>Ávila</option>
<option>Badajoz</option>
<option>Balears</option>
<option>Barcelona</option>
<option>Burgos</option>
<option>Cáceres</option>
<option>Cádiz</option>
<option>Castellón de la Plana</option>
<option>Ciudad Real</option>
<option>Córdoba</option>
<option>A Coruña</option>
<option>Cuenca</option>
<option>Girona</option>
<option>Granada</option>
<option>Guadalajara</option>
<option>Gipuzkoa</option>
<option>Huelva</option>
<option>Huesca</option>
<option>Jaén</option>
<option>León</option>
<option>Lleida</option>
<option>La Rioja</option>
<option>Lugo</option>
<option>Madrid</option>
<option>Málaga</option>
<option>Murcia</option>
<option>Navarra</option>
<option>Ourense</option>
<option>Asturies</option>
<option>Palencia</option>
<option>Las Palmas</option>
<option>Pontevedra</option>
<option>Salamanca</option>
<option>S.C.Tenerife</option>
<option>Cantabria</option>
<option>Segovia</option>
<option>Sevilla</option>
<option>Soria</option>
<option>Tarragona</option>
<option>Teruel</option>
<option>Toledo</option>
<option>Valencia</option>
<option>Valladolid</option>
<option>Bizkaia</option>
<option>Zamora</option>
<option>Zaragoza</option>
<option>Ceuta</option>
<option>Melilla</option>
</select>
    <br>
	<b><em><font color="#000000">Ciudad:</font></em></b><br>
    <input type="text" name="ciudad" maxlength="20">
    <br>
	<b><em><font color="#000000">Telefono:</font></em></b><br>
    <input type="text" name="telefono" maxlength="10">
    <br>
	<b><em><font color="#000000">Fecha de Nacimiento:</font></em></b><br>
    <select name=dia>
	<option>1</option>
	<option>2</option>
	<option>3</option>
	<option>3</option>
	<option>4</option>
	<option>5</option>
	<option>6</option>
	<option>7</option>
	<option>8</option>
	<option>9</option>
	<option>10</option>
	<option>11</option>
	<option>12</option>
	<option>13</option>
	<option>14</option>
	<option>15</option>
	<option>16</option>
	<option>17</option>
	<option>18</option>
	<option>19</option>
	<option>20</option>
	<option>21</option>
	<option>22</option>
	<option>23</option>
	<option>24</option>
	<option>25</option>
	<option>26</option>
	<option>27</option>
	<option>28</option>
	<option>29</option>
	<option>30</option>
	<option>31</option>
	<select name=mes>
	<option>Enero</option>
	<option>Febrero</option>
	<option>Marzo</option>
	<option>Abril</option>
	<option>Mayo</option>
	<option>Junio</option>
	<option>Julio</option>
	<option>Agosto</option>
	<option>Septiembre</option>
	<option>Octubre</option>
	<option>Noviembre</option>
	<option>Diciembre</option>
	<select name=anio>
	<option>1992</option>
	<option>1991</option>
	<option>1990</option>
	<option>1989</option>
	<option>1988</option>
	<option>1987</option>
	<option>1986</option>
	<option>1985</option>
	<option>1984</option>
	<option>1983</option>
	<option>1982</option>
	<option>1981</option>
	<option>1980</option>
	<option>1979</option>
	<option>1978</option>
	<option>1977</option>
	<option>1976</option>
	<option>1975</option>
	<option>1974</option>
	<option>1973</option>
	<option>1972</option>
	<option>1971</option>
	<option>1970</option>
	<option>1969</option>
	<option>1968</option>
	<option>1967</option>
	<option>1966</option>
	<option>1965</option>
	<option>1964</option>
	<option>1963</option>
	<option>1962</option>
	<option>1961</option>
	<option>1960</option>
	<option>1959</option>
	<option>1958</option>
	<option>1957</option>
	<option>1956</option>
	<option>1955</option>
	<option>1954</option>
	<option>1953</option>
	<option>1952</option>
	<option>1951</option>
	<option>1949</option>
	<option>1948</option>
	<option>1947</option>
	<option>1946</option>
	<option>1945</option>
	<option>1946</option>
	<option>1945</option>
	<option>1944</option>
	<option>1943</option>
	<option>1942</option>
	<option>1941</option>
	<option>1940</option>
	<option>1939</option>
	<option>1938</option>
	<option>1937</option>
	<option>1935</option>
	<option>1934</option>
	<option>1933</option>
	<option>1932</option>
	<option>1931</option>
	<option>1930</option>
	</select>
	<br>
    <b><em>Email:</em></b><br>
    <input type="text" name="email" maxlength="40">
	<br>
    </select>
    <br>
    <br>
    <input type="submit" name="enviar" value="Registrar">
  </div>
</form>
</div>
<?
}   
?>
yo ponia esto, despues de hacer el registro en la base de datos, pero no envia el correo, no se como funciona

Código:
$ip = $_POST['ip'];
$httpref = $_POST['httpref'];
$httpagent = $_POST['httpagent'];
$email = $_POST['email'];

if (eregi('http:', $notes)) {
die ("Do NOT try that! ! ");
}

$todayis = date("l, F j, Y, g:i a") ;

$subject = prueba;

$notes = stripcslashes($notes);

$message = "
De: [email protected] ([email protected])\n
Asunto:  \n
Mensaje: Gracias por registrarte, $nombre $apellido \n
IP: $ip \n
";

$from = "From: $email\r\n";


mail("$email", $subject, $message, $from);
Un saludo

Última edición por nife951; 03/08/2010 a las 12:35
  #2 (permalink)  
Antiguo 03/08/2010, 12:10
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 9 meses
Puntos: 35
Respuesta: Enviar mail al finalizar fomulario

y en que momento de tu codigo envias el email?.......
__________________
I am Doyle please insert code.
  #3 (permalink)  
Antiguo 03/08/2010, 12:11
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Enviar mail al finalizar fomulario

Puedes buscar en google como enviar correos desde php, hay muchísima información.

Puedes hacerlo con la función mail o a través de smtp. ( a veces puedes estar condicionado por el servidor en el que estés )

Yo uso la clase PHP Mailer para el envío de mails.

Vienen códigos de ejemplo que puedes adaptar, en este caso deberás guardar el correo de la persona que se ha registrado ( para poder registrarse deberías verificar que ese correo es suyo ) y le envías un mail, es sencillo.


Un saludo!
  #4 (permalink)  
Antiguo 03/08/2010, 12:41
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Enviar mail al finalizar fomulario

Posiblemente el problema lo tengas con el $subject, que no lo pones entre "
Ponlo asi $subject = "Paginas Andaluzas"; igual por eso, la funcion mail, da error y no envia el email.

tambien puedes hacer que la funcion mail te devuelva un valor a una variable e imprimirla con un echo, asi sabes si ha habido algun error al enviar el email.

Debes tener en cuenta, que la funcion mail usa el servidor de correo del propio servidor web, es decir, que si en la maquina del servidor web, no hay servidor de correo instalado, evidentemente no se enviara el correo.
  #5 (permalink)  
Antiguo 03/08/2010, 13:31
 
Fecha de Ingreso: agosto-2010
Mensajes: 5
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Enviar mail al finalizar fomulario

Gracias por las respuestas, DooBie lo he intentado como dices de poner el $subject: "entrecomillas"; y sigue sin funcionar, nose a que se puede deber...
  #6 (permalink)  
Antiguo 03/08/2010, 13:50
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 9 meses
Puntos: 35
Respuesta: Enviar mail al finalizar fomulario

la cabecera está incompleta, no posee conten type.
mas info en http://php.net/manual/es/function.mail.php
__________________
I am Doyle please insert code.

Etiquetas: enviar, finalizar, mail
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 10:53.