@emprear Sólo puse parte del código por eso no sale cuando defino $email
Respecto a los ejemplos, usé uno pero tendría algo mal y no funcionaba, reemplazando un par de cosas conseguí que enviara el email.
Este es el código fuente que funciona de mi proyecto por si le quieres hechar un vistazo:
Código PHP:
<?php
include("class.phpmailer.php");
include("class.smtp.php");
header("Content-type: text/html; charset=utf-8");
//Comprobación de los campos
if ($_POST['password'] !== $_POST['cpassword']) {
echo ('<span style="color:#FF0000">Error: Las contraseñas no coinciden.</span><br>');
$error = 1;
}
if ($_POST['password'] == false) {
echo ('<span style="color:#FF0000">Error: El campo de la contraseña está vacío.</span><br>');
$error = 1;
}
if ($_POST['usuario'] == false) {
echo ('<span style="color:#FF0000">Error: El campo del nombre de usuario está vacío.</span><br>');
$error = 1;
}
if ($_POST['email'] == false) {
echo ('<span style="color:#FF0000">Error: El campo del correo electrónico está vacío.</span><br>');
$error = 1;
}
if ($error == 1) goto end;
$usuario = trim($_POST['usuario']);
$usuario = ereg_replace("[^A-Za-z0-9ñÑáéíóú_.]","",$usuario);
if ($usuario !== trim($_POST['usuario'])) {
echo ('<span style="color:#FF0000">Error: No se permiten caracteres especiales en el nombre de usuario.</span><br>');
$error = 1;
}
if (strlen($usuario) < 2) {
echo ('<span style="color:#FF0000">Error: Nombre de usuario demasiado corto.</span><br>');
$error = 1;
}
$contraseña = ($_POST['password']);
$contraseña = ereg_replace("[^A-Za-z0-9ñÑçÇáéíóú$#%&¬_.:;,-]","",$contraseña);
if ($contraseña !== trim($_POST['password'])) {
echo ('<span style="color:#FF0000">Error: No se permiten caracteres especiales en la contraseña.</span><br>');
$error = 1;
}
if (strlen($_POST['password']) < 8) {
echo ('<span style="color:#FF0000">Error: Contraseña demasiado corta.</span><br>');
$error = 1;
}
$contraseña = sha1(md5(trim($_POST['password'])));
$email = trim($_POST['email']);
$verificacion_arroba_email = strstr($email,"@");
if ($verificacion_arroba_email == false) {
echo ('<span style="color:#FF0000">Error: Dirección de email no válida.</span><br>');
$error = 1;
}
if (strlen($email) < 6) {
echo ('<span style="color:#FF0000">Error: Dirección de email demasiado corta.</span><br>');
$error = 1;
}
if ($error == 1) goto end;
$fecha = time();
$ipusuario = $_SERVER['REMOTE_ADDR'];
$conexion = mysql_connect("localhost","root","mipasssql");
if (!$conexion) {
die('Error de conexión a la base de datos');
}
//Fin de comprobación de formulario, empezamos con escribir los datos en el registro y verificar que ninguno de los datos existan.
mysql_select_db("ProyectoX", $conexion);
$sql = "INSERT INTO usuarios (nombre_usuario, pass_usuario, email_usuario, fecha_registro, ip_registro, fecha_ultimo_acceso, ip_ultimo_acceso, archivos_subidos, espacio_usado_mb, activo)
VALUES ('$usuario','$contraseña','$email','$fecha','$ipusuario','$fecha','$ipusuario','0','0', '1')";
if (!mysql_query($sql,$conexion))
{
die('Error: ' . mysql_error());
} else {
echo "Registro en la BD completado satisfactoriamente<br>Enviando email de validación...<br>";
}
mysql_close($conexion);
//////////////////////////Envíamos el email de validación/////////////////////////////////////
error_reporting(E_STRICT);
$mail = new PHPMailer();
$body = file_get_contents('contents.html');
$body = eregi_replace("[\]",'',$body);
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->Port = 465; // set the SMTP port
$mail->Username = "micorreogmail@gmail.com"; // GMAIL username
$mail->Password = "mipassgmail"; // GMAIL password
$mail->SetFrom = "micorreogmail@gmail.com";
$mail->FromName = "ProyectoX";
$mail->Subject = "Verificación de la cuenta de ProyectoX";
$mail->AltBody = "This is the body when user views in plain text format"; //Text Body
$mail->WordWrap = 50; // set word wrap
$mail->MsgHTML($body);
$mail->AddReplyTo("micorreogmail@gmail.com","Webmaster");
$mail->AddAddress("$email","$usuario");
$mail->IsHTML(true); // send as HTML
if(!$mail->Send()) {
echo ('<span style="color:#FF0000">Error: No se pudo enviar el email de validación.</span><br>');
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Se envió un email de validación a su dirección de correo electrónico.";
}
//###############################
end:
echo ("<br>Serás automáticamente redirigido en 6 segundos.");
echo '<meta http-equiv="Refresh" content="6;url=registrarse.html">';
?>
Todavía le falta para estar terminado..Ah y..Cualquier sugerencia es bienvenida, que nada mas estoy empezando a aprender PHP :P