簡體   English   中英

將Outlook修補程序升級到win32com.gen_py.Microsoft Outlook 14.0后,Python腳本不起作用

[英]Python script not working after patch upgrade of outlook to win32com.gen_py.Microsoft Outlook 14.0

我幾乎沒有與Microsoft Outlook 2010交互的任何Python腳本。

但是在將補丁應用到Outlook之后,在python 2.7腳本上獲得了所有這些錯誤(自最近3年以來運行良好)。

完整的錯誤是AttributeError:”對象沒有屬性'SaveASFile'

這是代碼

對於消息中的味精:

  attachments = msg.Attachments
  attachment = attachments.Item(1)      
  attachment.SaveASFile(os.path.join('c:\\EDIT', 'outlookAttach.txt'))

提前致謝。 -搖擺

我遇到了同樣的問題。 我將屬性名稱從“ SaveASFile”更改為“ SaveAsFile”

我知道這很有趣。 但是,它對我有用!

另外,請確保指定要下載的附件類型。 在您的情況下,附件為txt類型。

這是我的代碼:

att=msg.Attachments
attachment = att.Item(1)
attachment.SaveAsFile(os.path.join('C:\Users\Harish\Desktop', 'outlookAttach.msg'))

就我而言,附件為和eml文件。 因此,它工作正常。

或者,您可以執行以下操作:

attachment.SaveAsFile(os.path.join('C:\Users\Harish\Desktop', attachment.FileName))

也可以

希望能有所幫助

此屬性錯誤的主要原因是因為您的COM服務器已從后期綁定(動態)更改為早期綁定(靜態)。

  • 在后期綁定中,無論何時調用方法,都會向對象查詢該方法,如果成功,則可以進行調用。
  • 在“早期綁定”中,對象模型的信息是根據對象調用提供的類型信息預先確定的。 早期綁定會使用MakePy。 同樣,早期綁定也區分大小寫。

有兩種方法可以解決此問題:

  1. 使用動態模塊來強制您的代碼以面向后期的方式工作。 使用示例:

     "win32com.client.dynamic.Dispatch()" instead of "win32com.client.Dispatch()" 
  2. 使用駝峰式敏感關鍵字以早期綁定為導向。 使用示例:

     "excel.Visible()" instead of "excel.VISIBLE()" or "excel.visible()" 

在您的情況下,正如他所說的那樣使用:

"attachment.SaveAsFile" instead of "attachment.SaveASFile"

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM