Hola mira yo tuve un problema mas serio y era que los emails me llegaban como SPAM y tambien que no mostraba bien el HTML solo lei tu texto mas no tu espaguetti de codigo. asi que te dejo una ayuda que yo mismo desarrolle basandome en PHPMailer. saludos espero que te sirva.
Código PHP:
function enviar_correo($email_destino,$asunto,$mensaje) {
include("librerias/email/class.phpmailer.php");
include("librerias/email/class.smtp.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->Username = "@gmail.com";
$mail->Password = "tuclaveaqui";
$mail->From = "@gmail.com";
$mail->FromName = "GMAIL";
$mail->Subject = $asunto;
$mail->MsgHTML($mensaje);
$mail->AddAddress($email_destino, "Destinatario");
$mail->IsHTML(true);
if(!$mail->Send()) {
echo "Error: " . $mail->ErrorInfo;
}
else {
echo "Mensaje enviado correctamente";
}
}
enviar_correo('[email protected]','prueba GMAIL','IVAN Y LAURA SE AMABAN Y AUN SE QUIEREN DE VERDAD');
en el asunto le pasas el HTML y listo cero problemas y de esta manera no llegan como SPAM. y se ve bonito..
OJO recuerda que si envias HTML por email debes poner los CSS directamente en el Documento. no linkearlos desde tu sitio web.
mi asunto era distinto puesto que debia enviar una validacion de un deposito bancario a un X cliente asi que hice una clase la cual usara esta funcion enviar_correo() y me permitiera tener la flexibilidad de usarla alrededor de toda la aplicacion sin copiar y pegar todo ese monton de codigo..
es algo asi
NOTA: ESTOS SON EXTRACTOS DE MI CODIGO FUENTE PARA EXPLICARTE... ESTA CLASE TIENE DEPENDENCIAS DE OTRAS CLASES PARA LOGRAR LO ACOMETIDO ABAJO. ES PARA QUE LO USES COMO MODELO
Código PHP:
public function enviar_confirmacion($cedula,$tipo_mail) {
$profesion = array();
$profesion[1] = 'Arquitecto';
$profesion[2] = 'Urbanista';
$profesion[3] = 'Ingeniero';
$profesion[4] = 'Diseñador';
$modalidad = array();
$modalidad[1] = 'Equipo';
$modalidad[2] = 'Individual';
$status = array();
$status[1] = 'ACEPTADO';
$status[2] = 'RECHAZADO';
$status[0] = 'SIN VALIDAR';
if($tipo_mail == 'ACTIVAR') {
$sql = "SELECT
preinscripcion.nombres,
preinscripcion.apellidos,
preinscripcion.clave_unica,
preinscripcion.profesion,
preinscripcion.telefono,
preinscripcion.modularidad,
preinscripcion.direccion,
preinscripcion.email,
lista_estados.nombre_estado,
lista_sector.nombre_sector,
bancos.nombre_banco,
depositos.numero_referencia,
depositos.numero_cta_elect,
DATE_FORMAT(depositos.fecha_deposito,'%d-%m-%Y') AS fecha_deposito,
depositos.status,
depositos.cedula
FROM
depositos, bancos, preinscripcion, lista_estados, lista_sector
WHERE
depositos.idbanco = bancos.idbanco
AND
depositos.cedula = preinscripcion.cedula
AND
lista_estados.id_estado = preinscripcion.estado
AND
lista_sector.id_sector = preinscripcion.ciudad
AND
preinscripcion.cedula = $cedula;";
if($this->sql($sql)) {
$datos = $this->array_query();
if($datos['numero_cta_elect'] == '') {
$numero_cta = '---';
} else {
$numero_cta = $this->formatear_numero_cuenta($datos['numero_cta_elect']);
}
$asunto = 'Respuesta deposito bancario Sr(a) '.$datos['apellidos'].','.$datos['nombres'].'';
// inicio
$mensaje = 'AQUI MI HTML';
// fin
$email = $datos['email'];
if($this->enviar_correo($email,$asunto,$mensaje)) {
return true;
}
else {
return false;
}
}
}
// AQUI HAGO USO EFICIENTE DE LAS FUNCIONES PREVIAS enviar_correo() y enviar_confirmacion()
public function activar_cuenta($cedula) {
$sql = "UPDATE `depositos` SET `status` = '1'
WHERE cedula = $cedula
LIMIT 1 ;";
if($this->sql($sql)) {
$this->enviar_confirmacion($cedula,'ACTIVAR');
}
}
saludos espero que esto te aclare algo y te ayude a esquematizar mas tu codigo saludos..