Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/03/2010, 17:20
Avatar de eddwinpaz
eddwinpaz
 
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Respuesta: PhpMailer vs Hotmail!

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..
__________________
O nos hacemos miserables o nos hacemos fuertes , la cantidad de trabajo es la misma.

Última edición por eddwinpaz; 29/03/2010 a las 17:28