title: Trying to save an attachment from outlook via pythonCOM
body: <p>I am going through my outlook mail to fetch all attachments and save them in my computer.</p>
  
  <p>This is my code:</p>
  
  <pre><code>import win32com.client
  import os, sys
  
  class OutlookLib:
  
      def __init__(self, settings={}):
          self.settings = settings
  
      # Gets all messages in outlook   
      def get_messages(self):      
          outlook = win32com.client.Dispatch("Outlook.Application")
  
          # This allows us to access the "folder" hierarchy accessible within
          # Outlook. You can see this hierarchy yourself by opening Outlook
          # manually and bringing up the folder menu
          # (which typically says "Inbox" or "Outlook Today" or something).
          ns = outlook.GetNamespace("MAPI")
  
          all_inbox = ns.GetDefaultFolder(6).Items
          return all_inbox
  
      def get_body(self, msg):
          return msg.Body
  
      def get_subject(self, msg):
          return msg.Subject
  
      def get_sender(self, msg):
          return msg.SenderName
  
      def get_recipient(self, msg):
          return msg.To
  
      def get_attachments(self, msg):
          return msg.Attachments
  
  # Gets an attachment
  # Return true if clean
  # Otherwise, return false
  def checkAttach(fileAtt):
      pass # TODO something here
  
  def Main():
      global attach
  
      outlook = OutlookLib()
      messages = outlook.get_messages()
  
      # Loop all messages
      msg = messages.GetFirst()
      while msg:
          #print msg.Subject
          if not len(msg.Attachments) is 0:
              attach.append((msg.Attachments, msg.Subject))
          msg = messages.GetNext()
  
      for attachTuple in attach:
          print "Checking attachments under " + attachTuple[1]
          for fileAtt in attachTuple[0]:
              fileAtt.SaveAsFile(r"C:\Users\Lidor\Desktop\Dina\scan-mail")
              if checkAttach(fileAtt):
                  print fileAtt.FileName + " was found as malicous."
  
  attach = []
  
  if __name__ == "__main__":
      Main()
  </code></pre>
  
  <p>Now this is the error I get:</p>
  
  <pre><code>Traceback (most recent call last):
    File "C:\Users\Lidor\Desktop\Dina\scan-mail\mailScanner.py", line 67, in &lt;module&gt;
      Main()
    File "C:\Users\Lidor\Desktop\Dina\scan-mail\mailScanner.py", line 60, in Main
      fileAtt.SaveAsFile(r"C:\Users\Lidor\Desktop")
    File "&lt;COMObject &lt;unknown&gt;&gt;", line 2, in SaveAsFile
  com_error: (-2147352567, 'Exception occurred.', (4096, u'Microsoft Outlook', u"Cannot save the attachment. You don't have appropriate permission to perform this operation.", None, 0, -2147024891), None)
  </code></pre>
  
  <p>This is weird because I am admin and I have permissions on the pst and the output folder.
  I have also tried to run it in a admin CMD and still got the same error.</p>
  
  <p>btw if you know of a way to get the attachment into a python file object instead of saving it to my computer it will be even better.</p>
  
  <p>Thanks.</p>