El gestor de correo Gmail poco a poco va haciendo más restrictivasu política de ficheros no permitidos en los correos lo que junto con un efectivo pero a veces demasiado invasivo sistema anti virus puede llevar a que se nos bloquee un fichero en uno de nuestros correos imposibilitandonos descargarlo cuando realmente es lo que deseamos. Vamos a ver una manera para poder bajar ficheros adjuntos que hayan sido marcados como virus o fichero bloqueado con un pequeño programa en Python.

gmailblockedfile

 

Repasando un poco la política de ficheros no permitidos de Gmail podemos ver que es una lista bastante extensa, con la intención principal de impedir la distribución de malware, virus y programas potencialmente peligrosos pero que puede ser un problema en ciertos casos, como en el que yo mismo me he encontrado de querer descargar un fichero que en su momento pude enviarme sin problemas pero que ahora aparece como bloqueado.

Antes de nada, comentar que si se nos bloquea un fichero es bastante probable que este sea no seguro y solo deberíamos seguir el siguiente procedimiento si estamos absolutamente seguros del fichero que vamos a descargar.

En caso que el mensaje de correo en cuestión se vea afectado por el bloqueo antivirus veremos una alerta en pantalla dentro del propio cuerpo del email y el texto "fichero bloqueado" en rojo en el icono del adjunto. Para descargar este fichero seguiremos los siguientes pasos:

1-Mostraremos el mensaje en texto plano, a través de la opción "ver original" ("show original" en la captura de mi cuenta)

gmailblockedfile2

2-Se abrirá una nueva ventana en la que veremos nuestro email en texto plano.Seleccionamos todo el texto y lo guardamos en un fichero de texto, por ejemplo con el nombre adjunto.txt

3-Ahora vamos a crear un fichero python con el siguiente código:

import email
import sys

if __name__=='__main__':
   if len(sys.argv)<2:#comprueba numero de argumentos de entrada
      
print('Indica un fichero del cual extraer los adjuntos')
       sys.exit(1)
   msg = email.message_from_file(open(sys.argv[1]))#guarda nuestro email en la variable msg
  
for pl in msg.get_payload():#va comprobando las lineas de nuestro email
      
if pl.get_filename():#si llega a un adjunto
          
open(pl.get_filename(),'wb').write(pl.get_payload(decode=True))

y lo guardamos, por ejemplo con el nombre recuperaradjunto.py en el mismo directorio que el anteriormente creado adjunto.txt

4-Una vez tengamos ambos archivos listos, ejecutamos

recuperaradjunto.py adjunto.txt

y obtendremos el adjunto del email en la misma carpeta.