Saltar al contenido

cómo descargar archivos adjuntos de correos a una carpeta específica usando IMAP y php

Solución:

Para guardar archivos adjuntos como archivos, debe analizar la estructura del mensaje y eliminar todas las partes que son archivos adjuntos por sí mismos (disposición del contenido). Debe agrupar eso en clases propias para que tenga un acceso fácil y pueda manejar los errores más fácilmente con el tiempo, el análisis de correo electrónico puede ser frágil:

$savedir = __DIR__ . '/imap-dump/';

$inbox = new IMAPMailbox($hostname, $username, $password);
$emails = $inbox->search('ALL');
if ($emails) {
    rsort($emails);
    foreach ($emails as $email) {
        foreach ($email->getAttachments() as $attachment) {
            $savepath = $savedir . $attachment->getFilename();
            file_put_contents($savepath, $attachment);
        }
    }
}

El código de estas clases está más o menos envolviendo el imap_... funciones, pero para las clases adjuntas, también realiza el análisis de las estructuras. Encuentra el código en github. Espero que esto sea de ayuda.

Aunque el uso de PHP + Cron y un servidor de correo estándar puede funcionar, la cantidad de trabajo necesaria para manejar todos los casos extremos, informes de errores, etc. puede que no valga la pena. Aunque no lo he usado, Postmark Inbound parece un servicio increíble (pago) que eliminará la mayor parte del dolor de cabeza de procesar correo electrónico a través de la API imap de PHP.

Si desea intentar manejar todo a través de PHP, es posible que desee consultar este recurso.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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