Tengo una carpeta llena de correos electrónicos guardados desde una cuenta IMAP que disolví.
El nombre del archivo es la línea de asunto de cada correo electrónico.
Ahora, desafortunadamente, cuando se utiliza una codificación que no es ASCII, la línea de asunto se verá como si se viera internamente, con el prefijo =_
y la codificación utilizada:
=_UTF-8_Q_Auftragsbest=C3=A4tigung_(Kundennummer__)_=_20100819_150312_37.eml
=_windows-1252_Q_Best=E4tigung=3A_Wir_haben_Ihre_=_20100819_150310_28.eml
¿Alguien sabe una herramienta que podría usarse para solucionar esto en el nivel del sistema de archivos?
Una solución tendría que 1. quitar el =_ENCODING
prefijo y 2. si es posible, convierta los caracteres codificados en el nombre del archivo a las Umlauts equivalentes a su sistema de archivos adecuado.
Estoy en Windows 7 o XP, pero estaría listo para llevar esto a una máquina virtual de Linux porque es una grande carpeta y una solución automatizada sería genial .
Respuestas:
Me construí un script PHP. Pensé que lo compartiría en caso de que alguien más tenga un problema similar. Funciona para mí y para las codificaciones que necesitaba (es posible que tenga que extender la matriz de codificaciones).
El script convierte el archivo codificado MIME nombres Recursivamente a través de la estructura de directorio especificada en UTF-8.
No produce resultados totalmente perfectos: hay varios caracteres especiales que se convierten doblemente, o no se convierten en absoluto. Por lo que puedo ver, esto es culpa del exportador IMAP o información de codificación incorrecta dentro del propio correo electrónico.
mb_decode_mimeheader()
Es el corazón de todo el asunto.Lanzado al dominio público; sin garantía alguna. Se requiere PHP 5.2.
Debe ejecutarse tanto en CLI como a través de la web; Lo he probado en el navegador.
Haga copias de seguridad antes de ejecutar secuencias de comandos como esta en sus datos.
fuente
Ya que está dispuesto a mudarse a Linux, puede instalar un servidor php en él y hacer un script bastante sencillo para volver a codificar los archivos. El grado de dificultad depende de si alguna vez has hecho alguna programación. Puede hacer referencia a estas funciones en php.net
Estas son las funciones que necesitarías
fuente
mb_detect_encoding
Pero no es 100% confiable. Ese sería el siguiente paso para el guión si alguien quiere llevarlo más lejos. Estoy contento con la forma en que hace las cosas ahora.