tengo esta funcion para enviar el mail por phpmailer
Código PHP:
#Funcion que envia el Mail via SMTP
function envia($destinatario,$asunto,$cuerpo,$headers){
//Definimos las variables globales
global $smtp_user,$smtp_pass,$smtp_host,$from,$realname,$mail;
//Definimos las propiedades y llamamos a los métodos
//correspondientes del objeto mail
$mail->IsSMTP();
//Con la propiedad Mailer le indicamos que vamos a usar un
//servidor smtp
$mail->Mailer = "smtp";
//Puerto que usaremos
$mail->Port=25;
//Asignamos a Host el nombre de nuestro servidor smtp
$mail->Host = $smtp_host;
//Le indicamos que el servidor smtp requiere autenticación
$mail->SMTPAuth = true;
//Le decimos cual es nuestro nombre de usuario y password
$mail->Username = $smtp_user;
$mail->Password = $smtp_pass;
//Indicamos cual es nuestra dirección de correo y el nombre que
//queremos que vea el usuario que lee nuestro correo
$mail->From = $from; ///////////////////ESTO ES EL PROBLEMA /////////////
$mail->FromName = $realname;
//el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar
//una cuenta gratuita, por tanto lo pongo a 30
$mail->Timeout=10;
//Indicamos cual es la dirección de destino del correo
$mail->ClearAllRecipients();
$mail->AddAddress($destinatario);
//Asignamos asunto y cuerpo del mensaje
//El cuerpo del mensaje lo ponemos en formato html, haciendo
//que se vea en negrita
//hacemos unos cambios para ver que onda
$cuerpo = stripslashes ($cuerpo);
$cuerpo_text = str_replace ('</p>', '
', $cuerpo);
$cuerpo_text = str_replace ('<br>', '
', $cuerpo_text);
$cuerpo_text = strip_tags ($cuerpo_text);
$mail->Subject = $asunto;
$mail->Body = $cuerpo;
//Definimos AltBody por si el destinatario del correo no admite email con formato html
$mail->AltBody = $cuerpo_text;
//se envia el mensaje, si no ha habido problemas
//la variable $exito tendra el valor true
$exito = $mail->Send();
//Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas como mucho
//para intentar enviar el mensaje, cada intento se hara 5 segundos despues
//del anterior, para ello se usa la funcion sleep
$intentos=1;
while ((!$exito) && ($intentos < 5)) {
sleep(5);
//echo $mail->ErrorInfo;
$exito = $mail->Send();
$intentos=$intentos+1;
}
if(!$exito)
{
$mensaje .= "Problemas enviando correo electrónico a ".$valor;
$mensaje .= "<br>".$mail->ErrorInfo;
}
}
$mail->From = $from; ///////////////////ESTO ES EL PROBLEMA /////////////
si el FROM no es el usuario SMTP llega automaticamente como spam.
¿Porqué?
¿alguna solución?