Zend_Mail y Servidores Microsoft Exchange

Durante el día de ayer y casi toda esta mañana, he estado dándole vueltas a un problema con los archivos adjuntos que enviaba usando el Zend_Mail.

El script PHP genera una imagen que luego es enviada como adjunto usando las funciones de la clase Zend_Mail. Hasta aquí todo bien. Lo pruebo y funciona correctamente. Lo prueba el cliente… y no le funciona. El adjunto llega corrupto y no puede ver la imagen. Mi primera suposición es que sería algún problema de Windows (no iba muy mal encaminado), pero dificil discernir cuando el cliente tiene instalado un filtro antivirus, otro filtro antispam y la gestión del correo en un servidor Microsoft Exchange…

Bueno, pues para los que os encontreis con el mismo problema, aquí va la solución:

Cambiar el valor de la constante LINELENGTH en el archivo Zend/Mime.php (sobre la línea 41) y poner 72 en vez de 74.

Al parecer al servidor Microsoft Exchange no le gusta que las lineas sean muy largas en los adjuntos codificados…

Gracias, gracias y mil gracias a David Brännlund .

Publicado por

manuel

Me dedico al desarrollo de aplicaciones. Principalmente trabajo con XHTML, CSS, Javascript, XML, JSON, PHP, MySQL, Linux/MacOS X y Flash actionscript. Intento siempre trabajar con estándares y simplificar el desarrollo y las aplicaciones finales con el objetivo de orientarlas al usuario (que sean útiles y faciliten el trabajo).

5 comentarios sobre “Zend_Mail y Servidores Microsoft Exchange”

  1. Si esa es la unica solucion, creo que tendrias que reportarlo en la pagina de zend, tenes un apartado para eso.

    Si la solucion es tocar directamente el codigo de la libreria esta mal. Lo que habria que hacer es enviar un parametro extra al metodo que necesita esa constante, con el valor correspondiente, o especificar que vamos a usar.

    Saludos

  2. Imagino que LINELENGTH es una constante de la clase en cuestión, no?. No hay ningún “parametro” o método para ajustar ese valor de forma variable?

  3. En la pagina del bug uno de los comentarios dice:

    Frederic Marchal – 10/Jun/08 03:01 AM
    Our customers have encountered this corruption for every file attached, not only PDF.

    Their environment is : Exchange v6.5, Outlook 2K3

    I read the source of ezc, PHPmailer class and PEAR::Mail, and I found they all use a line length of 76.

    So, I changed the constant LINELENGTH (line 41 of Mime.php) to 76, and it works well for every attachments.
    I do not tried zip files.

  4. Si, yo también lo he visto Oscar, pero antes de llegar ahí, encontré la solución de ponerlo en 72 y tras probarlo ha funcionado perfectamente. Así que parece que lo que no le gusta al MS Exchange es el 74 :P

    Como habrás visto en el reporte de error, LINELENGTH es una constante de clase y no existe ningún parámetro que te permita cambiarla. Por eso la necesidad de modificar directamente el archivo de la clase.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *