2017-02-22 2 views
0

Je veux avoir un script python pour télécharger un fichier avec le nom spécifié mais de n'importe quel format de fichier (il peut être .txt, .csv, .pdf, .docx, .xlsx,. msg, etc.) Actuellement, j'ai le code python suivant pour télécharger les pièces jointes des perspectives 2013:Télécharger la pièce jointe à partir d'Outlook 2013 en utilisant le script Python

import win32com.client 
from win32com.client import Dispatch 
import datetime as date 
import os.path 

def attach(subject,name): 
    outlook = Dispatch("Outlook.Application").GetNamespace("MAPI") 
    inbox = outlook.GetDefaultFolder("6") 
    all_inbox = inbox.Items 
    val_date = date.date.today() 
    sub_today = subject 
    att_today = name 
    for msg in all_inbox: 
     if msg.Subject == sub_today: 
      break 
    for att in msg.Attachments: 
     if att.FileName == att_today: 
      break 
    att.SaveASFile(os.getcwd() + '\\' + att.FileName) 
    print "Mail Successfully Extracted" 

Si je fais spécifique pour certain type d'attachement, il fonctionne très bien.

attach('Hi','cr.txt') 

mais je veux faire quelque chose comme ceci:

attach('Hi','cr.*') 

il peut télécharger la fixation avec le nom « cr », mais de tout format de fichier. Quelqu'un peut-il suggérer un moyen de contourner ce problème, ce serait utile.

+0

En outre, Ce code vérifie uniquement pour le courrier reçu aujourd'hui 'val_date = date.date.today()' Je veux vérifier les pièces jointes dans le courrier reçu dans les 7 derniers jours. Comment devrais-je faire ça? J'ai cherché la documentation de ** win32com ** mais je ne la trouve nulle part. –

Répondre

1

Hope this helps :)

import win32com.client, datetime 
from win32com.client import Dispatch 
import datetime as date 
import os.path 

def checkTime(current_message): 
    date_filter_unformated = datetime.date.today() - date.timedelta(days=7) 
    date_filter = date_filter_unformated.strftime("%m/%d/%y %I:%M:%S") 
    message_time = current_message.ReceivedTime 
    df_list = list(date_filter) 
    mt_list = list(str(message_time)) 
    df_month, mt_month = int(''.join([df_list[0],df_list[1]])), int(''.join([mt_list[0],mt_list[1]])) 
    df_day, mt_day = int(''.join([df_list[3],df_list[4]])), int(''.join([mt_list[3],mt_list[4]])) 
    df_year, mt_year = int(''.join([df_list[6],df_list[7]])), int(''.join([mt_list[6],mt_list[7]])) 
    if mt_year < df_year: 
     return "Old" 
    elif mt_year == df_year: 
     if mt_month < df_month: 
      return "Old" 
     elif mt_month == df_month: 
      if mt_day < df_day: 
       return "Old" 
      else: 
       CurrentMessage(current_message) 
       return "Pass" 
     elif mt_month > df_month: 
      CurrentMessage(current_message) 
      return "Pass" 

def CurrentMessage(cm): 
    print cm.Sender, cm.ReceivedTime 


def getAttachment(msg,subject,name): 
    val_date = date.date.today() 
    sub_today = subject 
    att_today = name#if you want to download 'test.*' then att_today='test' 
    for att in msg.Attachments: 
     if att.FileName.split('.')[0] == att_today: 
      att.SaveASFile(os.getcwd() + '\\' + att.FileName) 


def attach(subject,name): 
    outlook = Dispatch("Outlook.Application").GetNamespace("MAPI") 
    inbox = outlook.GetDefaultFolder("6") 
    all_inbox = inbox.Items 
    all_inbox = all_inbox.Sort("[ReceivedTime]", True) 
    sub_today=subject 

    for current_message in all_inbox: 
     if checkTime(current_message) == "Pass" and current_message.Subject == sub_today: 
      getAttachment(current_message,subject,name)  
    print "Mail Successfully Extracted" 
+0

va-t-il télécharger la pièce jointe en fonction du nom de la pièce jointe, et non de l'extension du fichier? –

+0

je l'ai couru, et il a soulevé l'erreur: '--------------------------------------- ------------------------------------ TypeError dans () ----> 1 attacher ('liste révisée', 'metrices_V7') à joindre (sujet, nom) 48 sub_today = sujet 49 ---> 50 pour current_message dans all_inbox: 51 si checktime (current_message) == "Pass" et current_message.Subject == sub_today: 52 Getattachment (current_message, sujet, nom) TypeError: objet 'NoneType' est pas iterable' –

+0

Il va downlo annonce sur le nom de la pièce jointe. –