2017-02-21 2 views
0

I-Anhänge von Outlook 2013 auf Windows zum Download versuchen 7. Ich schrieb für sie folgende Funktion:'UnboundLocalError' in derselben Funktion Anlage von Outlook 2013 zum Download, wenn sie mit verschiedenen Parametern läuft

def attach(subject,name): 
    print "Execution begin" 
    outlook = Dispatch("Outlook.Application").GetNamespace("MAPI") 
    inbox = outlook.GetDefaultFolder("6") 
    all_inbox = inbox.Items 
    val_date = date.date.today() 

    print "accessing parameters" 
    sub_today = subject 
    att_today = name 

    for msg in all_inbox: 
     if msg.Subject == sub_today: 
     print "sub_today" 
     break 
    for attachment in msg.Attachments: 
     if attachment.FileName == att_today: 
     print "att_today" 
     print attachment 
     break 

    repository='C:\\Users\\tanmay.shrivastava\\Desktop\\Dashboard' 
    print "repository" 
    attachment.SaveAsFile(repository + '\\'+att_today) 
    print "saved" 
    print "Execution completed" 

ich die angerufene Funktion mit zwei verschiedenen Listen: Liste 1 und Liste 2.

list1=['Hi','cr.txt'] 
list2=['abc Requirements','cr.txt'] 

Der Code funktioniert, wenn ich es mit list1 aufrufen.

attach(list1[0],list1[1]) 

aber wenn ich es mit den Parametern von list2 aufrufen, zeigt es Fehler

attach(list2[0],list2[1]) 

UnboundLocalError       Traceback (most recent call last) 
<ipython-input-12-4238cd3c2efd> in <module>() 
----> 1 attach(list2[0],list2[1]) 

<ipython-input-2-3bb862eb2bb6> in attach(subject, name) 
    26  repository='C:\\Users\\tanmay.shrivastava\\Desktop\\Dashboard' 
    27  print "repository" 
---> 28  attachment.SaveAsFile(repository + '\\'+att_today) 
    29  print "saved" 
    30  print "Execution completed" 

UnboundLocalError: local variable 'attachment' referenced before assignment 

Ich weiß nicht, was es verursacht. Kann mir jemand dabei helfen?

+0

Meine Vermutung ist, 'msg.Attachments' leer war deshalb' attachment' wurde nie definiert. –

+0

@AlexFung Ich habe es getestet, indem ich eine E-Mail mit dem erforderlichen Anhang an mich selbst gesendet habe. Wenn die Mail nicht vorhanden ist, dann schätze ich, dass es einen "AttributeError" –

+0

auslöst. So vermeidet meine Lösung die Fehler nicht? –

Antwort

0

Der Grund für den Fehler ist, dass keine Nachricht oder Anlage gefunden wurde.

Dies würde den Fehler nicht erhöhen, wie in der Frage erwähnt:

def attach(subject,name): 
    print "Execution begin" 
    outlook = Dispatch("Outlook.Application").GetNamespace("MAPI") 
    inbox = outlook.GetDefaultFolder("6") 
    all_inbox = inbox.Items 
    val_date = date.date.today() 

    print "accessing parameters" 

    for msg in all_inbox: 
     if msg.Subject == subject: 
      print "sub_today" 

      for attachment in msg.Attachments: 
       if attachment.FileName == name: 
        print "att_today" 
        print attachment 

        repository='C:\\Users\\tanmay.shrivastava\\Desktop\\Dashboard' 
        print "repository" 
        attachment.SaveAsFile(repository + '\\'+name) 
        print "saved" 
        print "Execution completed" 
        return True 
+0

Ich mailte mir die erforderliche Datei mit dem erforderlichen Post-Betreff, aber es verursachte den Fehler. Ich werde prüfen, ob das funktioniert oder nicht. –

+0

Lassen Sie mich wissen, wie es geht. –

+0

Es zeigt immer noch die 'UnboundLocalError: lokale Variable 'Anlage' vor der Zuweisung referenziert ' –

Verwandte Themen