Problema con el envío de correos a hotmail desde Oscommerce.
Si tenéis problemas con el envío de correos al servidor de Hotmail desde tu oscommerce, y has probado ya con mi último post y los correos a otros servidores llegan con normalidad pero al servidor de Hotmail no, entonces la solución a tu problema está aquí.
Problema: Autenticación en el servidor smtp
El servidor de correo de Hotmail, es exigente en la recepción de sus correos, al menos he detectado en cuanto a la manera de recibir las cabeceras no acepta textos extraños en algunas de las instrucciones como: la del “To:” donde no permite colocar al lado de la dirección de correo algún texto, al igual que en la instrucción “From:” así como el orden de los retornos de carro y/o saltos de línea no son los comunes (\r o \n) todo ello o al menos con una de éstas instrucciones descritas provocarían que vuestro correo no llegue al destinario con servidor de Hotmail. Ejemplo:
From: “Texto Cuaqluiera” email@tuservidor.com
To: “Texto cualquiera” tucorreo@hotmail.com
MIME-Version: 1.0
X-Mailer: osCommerce Mailer
Content-Type: text/plain; charset=”iso-8859-1″
Content-Transfer-Encoding: 7bit
Solución:
Colocar el orden correcto de los retornos de carro y/o saltos de línea y eliminar cualquier texto que contiene dentro de las direcciones que va en las cabeceras de “To: “ y “From:” respectivamente y dejar limpias las direcciones de correo, mas o menos quedaría así:
From: email@tuservidor.com
To: tucorreo@hotmail.com
MIME-Version: 1.0
X-Mailer: osCommerce Mailer
Content-Type: text/plain; charset=”iso-8859-1″
Content-Transfer-Encoding: 7bit
Procedimiento:
Ubicar y corregir los archivos email.php (ojo existen 2, para el usuario y para el admin) de tu oscommerce uno lo encontrarás dentro de la carpeta includes/classes y el otro en admin/includes/classes. Ubicas el siguiente trozo de código:
$this->lf = “\r\n”;
Y luego este otro:
$to = (($to_name != ”) ? ‘”‘ . $to_name . ‘” <’ . $to_addr . ‘>’ : $to_addr);
$from = (($from_name != ”) ? ‘”‘ . $from_name . ‘” <’ . $from_addr . ‘>’ : $from_addr);
Y reemplazas por el siguiente :
$this->lf = “\n\r”;
Y este otro:
$to = (($to_name != ”) ? ‘ ‘ . $to_addr . ‘ ‘ : $to_addr);
$from = (($from_name != ”) ? ‘ ‘ . $from_addr . ‘ ‘ : $from_addr);
Esperamos que les sea de utilidad.