es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PHP imap_msgno devuelve cero una vez que el mensaje ha sido movido desde la bandeja de entrada, no hay forma de mover los mensajes una segunda vez.

Para mover un mensaje utilizando la función imap_mail_move() de PHP, necesitas el fluff “id” que no es un identificador real y se puede determinar utilizando la función imap_msgno() de PHP.

He encontrado que en todos los proveedores de correo, una vez que se mueve un mensaje de la bandeja de entrada, imap_msgno() siempre devuelve 0. La página de documentación es muy básica y no ayuda en absoluto.

He reportado un error de PHP, aunque espero que alguien tenga alguna idea al respecto. He probado las últimas versiones de PHP 7.3, 8.0 y 8.1 a partir del 5 de diciembre de 2021.

¿Cómo puedo hacer que imap_msgno() de PHP devuelva el id del mensaje en lugar de cero una vez que se haya movido el mensaje de la bandeja de entrada?

  • He probado AOL, Gmail y Yahoo con los mismos resultados en todas las versiones de PHP que he probado.
  • He podido mover los mensajes de la bandeja de entrada a otras carpetas utilizando la función imap_mail_move() de PHP.
  • Sí, estoy utilizando la función imap_expunge() de PHP para confirmar los cambios.
  • Sí, obviamente estoy pasando el id único correcto.
  • Sí, he verificado que los mensajes fueron movidos mediante la inspección directa de las carpetas en los proveedores de correo mencionados.
  • Sí, con el fin de probar todo lo que se me ocurre, he intentado mover los mensajes utilizando el id único (a pesar de que la documentación de imap_mail_move() establece que requiere el fluff “id”) y obviamente el intento falló.

Los errores para imap_mail_move() son obviamente causados por no tener el fluff “id” válido generado por imap_msgno(); los estoy publicando aquí en caso de que otros se encuentren con este problema y no se hayan dado cuenta de la causa raíz.

Unknown: Error del protocolo IMAP: [CLIENTBUG] Argumentos inválidos del comando COPY (errflg=2)

Unknown: [CLIENTBUG] Argumentos inválidos del comando COPY (errflg=2)

Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución para que imap_msgno() devuelva cero después de mover un mensaje usando imap_mail_move() en PHP

    Actualmente no se conoce ninguna solución para hacer que imap_msgno() devuelva el ID del mensaje en lugar de cero después de mover un mensaje usando imap_mail_move() en PHP. Parece ser un error en la implementación IMAP de PHP que afecta a todos los proveedores de correo probados, incluyendo AOL, Gmail y Yahoo.

    El problema se ha reportado como un error en PHP y, hasta el 5 de diciembre de 2021, no ha sido resuelto. Los errores que se encuentran al intentar utilizar imap_mail_move() sin el “id” válido generado por imap_msgno() son causados por este error.

    Hasta que se encuentre una solución, puede ser necesario utilizar métodos alternativos para identificar y mover mensajes dentro de las carpetas IMAP en PHP.

Comments are closed.