Exportación de contactos de MailEnable a RoundCube
MailEnable permite la importación de contactos a partir de un fichero CSV, pero no así la exportación, de forma que lo que el usuario introduce no tiene forma de extraerlo posteriormente. A no ser que sea el administrador, claro, en cuyo caso lo puede hacer a partir de los ficheros vCard que se encuentran en C:\plesk\Mail Servers\Mail Enable\Postoffices\dominio.tld\MAILROOT\usuario en el caso de un servidor con Plesk 9.
Estos ficheros requieren algo de procesamiento para poder dejarlos al gusto de RoundCube, ya que éste es capaz de importar un único fichero vCard con todos los contactos juntos, en UTF-8 sin utilizar codificación QP. Así, pues, mediante las siguientes líneas de Python y un par de comandos, lo podemos dejar correctamente.
# This Python file uses the following encoding: utf-8 ''' qputf8: Elimina el quoted printable UTF-8 de un fichero Created on 17/10/2011 @author: Vicente Monroig (Digital Disseny) ''' import os import sys # Obtenemos la ruta donde se está ejecutando el archivo ruta = os.path.dirname(os.path.abspath(__file__)) + '/' # Recogemos los parámetros de entrada o mostramos la ayuda if (len(sys.argv) > 1): entrada = sys.argv[1] if (len(sys.argv) > 2): salida = sys.argv[2] else: salida = entrada + '.OK' print "Procesando fichero " + entrada + "..." fentrada = open(ruta + entrada, "r") fsalida = open(ruta + salida, "w") lista = [] while True: linorig = fentrada.readline() if not linorig: break # Si hay una cadena UTF-8, la procesamos lin = linorig.replace('=?UTF-8?Q?', '') if (lin != linorig): lin = lin.replace('=C3=80', 'À') lin = lin.replace('=C3=81', 'Á') lin = lin.replace('=C3=88', 'È') lin = lin.replace('=C3=89', 'É') lin = lin.replace('=C3=8C', 'Ì') lin = lin.replace('=C3=8D', 'Í') lin = lin.replace('=C3=92', 'Ò') lin = lin.replace('=C3=93', 'Ó') lin = lin.replace('=C3=99', 'Ù') lin = lin.replace('=C3=9A', 'Ú') lin = lin.replace('=C3=87', 'Ç') lin = lin.replace('=C3=91', 'Ñ') lin = lin.replace('=C3=A0', 'à') lin = lin.replace('=C3=A1', 'á') lin = lin.replace('=C3=A8', 'è') lin = lin.replace('=C3=A9', 'é') lin = lin.replace('=C3=AC', 'ì') lin = lin.replace('=C3=AD', 'í') lin = lin.replace('=C3=B2', 'ò') lin = lin.replace('=C3=B3', 'ó') lin = lin.replace('=C3=B9', 'ù') lin = lin.replace('=C3=BA', 'ú') lin = lin.replace('=C3=A7', 'ç') lin = lin.replace('=C3=B1', 'ñ') lin = lin.replace('=C2=AA', 'ª') lin = lin.replace('=C2=BA', 'º') lin = lin.replace('?=', '') # De paso, cambiamos los _ por espacios, con cuidado con las direcciones de e-mail if (not '@' in lin): lin = lin.replace('_', ' ') if (lin != linorig): print "Sustituída la línea " + linorig + " por " + lin + "." fsalida.write(lin) fentrada.close() fsalida.close() print("Fichero " + salida + " generado en %s." % ruta) else: print """ Información: qputf8 es una pequeña utilidad que busca y elimina las cadenas codificadas como quoted printable en UTF-8 dentro de un fichero de texto, transformándolo a su equivalente de texto "normal". Así, por ejemplo: ?UTF-8?Q?G=C3=B3mez_Domin=C3=B3?=; pasa a ser Gómez Dominó; Uso: qputf8.py [] """
Con los siguientes comandos ejecutamos la utilidad en todos los ficheros y después creamos un único vCard:
find contactos/*.VCF -exec python qputf8.py {} \; cat contactos/*.VCF.OK > todos.VCF
En cuanto a los grupos, no he encontrado nada, aunque tampoco le he dedicado mucho tiempo, así que cualquier sugerencia es bienvenida.
Deja un comentario