problema con php (envio de correo)

L

Hola amigos! Siguiendo con mi aprendizaje con diferentes lenguajes ahora le estoy tomando el pulso a php. Estoy intentado hacer el tipico formulario de registro con validaciones y demás.

El caso es que ya lo tengo casi terminado me llegan los datos a la base de datos pero no se porque la función de envio de mail para terminar el registro del usuario no termina de enviar el mail y la verdad que he repasado el codigo ya varias veces y no encuentro el fallo por ningun lado. Acudo a vosotros para ver si alguien me puede echar una manilla. Os dejo las formulas que estoy haciendo especificamente para este paso a ver si alguien encuentra el problema.

 function insertarReg($name_, $username_, $password1_, $email_){
  
global $url;
$clave = generar_txtAct(20,false);
$url = "activar.php?id=" . $clave;
$servidor = ""; $usuario = ""; $password = ""; $sdb = ""; $ilink3=mysql_connect($servidor,$usuario,$password) or die(mysql_error()); mysql_select_db($sdb,$ilink3); $inserta= "insert into Usuarios_temp (usuariotemp,password,email,fechalta,txt_Activ) values ('$username_','$password1_','$email_',CURDATE(),'$clave')"; $resultado3=mysql_query($inserta,$ilink3) or die (mysql_error()); if (!$resultado3) return false; else return true; } function mailactivacion($email, $username, $url){ $destinatario = $email; $asunto = "COLORATE - Activar Usuario"; $cuerpo = ' <html> <head> <title>COLORATE - Activar usuario</title> </head> <body> <h1>Hola'; $cuerpo .= $username; $cuerpo .= '<p><b>Gracias por registrarte en COLORATE</b>.</p> <p>Para completar el registro tienes que confirmar que has recibido el e-mail en el siguiente enlace:</p> <p style=text-align:center><a href='; $cuerpo .= $url; $cuerpo .= " target=_blank>Activa tu usuario</a></p></body></html>"; //para el envío en formato HTML $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; //dirección del remitente $headers .= "From: Admin COLORATE <b7_15960783@mylifebelike.byethost7.com>\r\n"; //dirección de respuesta, si queremos que sea distinta que la del remitente $headers .= "Reply-To: b7_15960783@mylifebelike.byethost7.com\r\n"; //ruta del mensaje desde origen a destino //$headers .= "Return-path: holahola@desarrolloweb.com\r\n"; //direcciones que recibián copia //$headers .= "Cc: maria@desarrolloweb.com\r\n"; //direcciones que recibirán copia oculta //$headers .= "Bcc: pepe@pepe.com,juan@juan.com\r\n"; mail($destinatario,$asunto,$cuerpo,$headers); } function generar_txtAct($longitud,$especiales){ // Array con los valores a escojer $semilla = array(); $semilla[] = array('a','e','i','o','u');
$semilla[] = array('b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'); $semilla[] = array('0','1','2','3','4','5','6','7','8','9'); $semilla[] = array('A','E','I','O','U');
$semilla[] = array('B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Y','Z'); $semilla[] = array('0','1','2','3','4','5','6','7','8','9');
// si puede contener caracteres especiales, aumentamos el array $semilla if ($especiales) { $semilla[] = array('$','#','%','&','@','-','?','¿','!','¡','+','-','*'); } // creamos la clave con la longitud indicada for ($bucle=0; $bucle < $longitud; $bucle++) { // seleccionamos un subarray al azar $valor = mt_rand(0, count($semilla)-1); // selecccionamos una posicion al azar dentro del subarray $posicion = mt_rand(0,count($semilla[$valor])-1); // cojemos el caracter y lo agregamos a la clave $clave .= $semilla[$valor][$posicion]; } // devolvemos la clave return $clave; }

Eso iria en la parte alta del html y ya en el main del fichero iria la llamada de la funcion:

<?php 
     if(insertarReg($nameValue, $usernameValue, $passwordValue, $emailValue))?>
     <?php mailactivacion($emailvalue, $username,$url); ?>
      <h1>Registro introducido correctamente en la base de datos</h1>
 
  <div class="respuesta_insert">
  <p>Gracias por registrarte en EngelsFort.</p>
  <p>Te hemos mandado un mail a <span style="color:green"><?php echo $emailValue; ?></span> para que confirmes el alta. Si no lo recibes comprueba la bandeja de correo no deseado</p>
  <p>Gracias!</p>
  <p>Administrador Laura</p>
  <p>cosa random.</p>
  
  </div>
  
  
<?php else: ?>
  <?php if ($respuesta == 1) ?>
  <h1 style="font-color: red">No se ha podido insertar el registro en nuestra base de datos</h1>
<!--<h1>¡Formulario enviado con éxito!</h1>-->
<?php endif; ?>
   <?php endif; ?>
ZHoNNe

Buenas,

Antes de nada, estas trabajando en local o en internet? Te en cuenta que si has montado un servidor web local para que te funcione la funcion mail debes tener instalado un servidor de correo.

1

Usuarios habituales