【问题标题】:Clearly documented reading of emails functionality with python win32com outlook使用 python win32com Outlook 清楚地记录阅读电子邮件功能
【发布时间】:2014-05-13 21:00:59
【问题描述】:

我正在尝试通过 win32com 更好地了解 Outlook 交互。我一直无法找到明确的文档来允许我利用 win32com 有效地阅读电子邮件,从我目前的调查来看,这似乎是用户相当普遍的情绪。于是就有了以下信息和要求:

有人可以吗;

1.提供指向清晰文档位置的链接(如果存在)

2。在下面展开

以下是我根据阅读其他人的代码发现的当前功能。

获取以下代码:

import win32com

outlook=win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

inbox=outlook.GetDefaultFolder(6)

messages=inbox.Items

for message in messages:
    attachments = message.attachments

    for attachment in attachments:
        pass

据我所知,上面使用的对象具有以下功能:

收件箱-

.Folders
.Items

消息 -

.GetFirst()
.GetLast()
.GetNext()
.GetPrevious()
.Attachments

消息-

.Subject
.Body
.To
.Recipients
.Sender
.Sender.Address

附件 -

.item()
.Count

附件-

.filename

如果您知道更多功能,请在您的答案中添加。

【问题讨论】:

  • 我的机器上设置了三个 Outlook 配置文件。如何在 python 中选择要选择的配置文件?
  • 抱歉,时间有限。我认为您需要将 GetDefaultFolder 替换为指向另一个配置文件的指针。我认为您不会太远探索以下链接和下拉选项。 msdn.microsoft.com/en-us/vba/outlook-vba/articles/…。祝你好运。
  • 谢谢。是的,我需要指向另一个配置文件。我看到了您提供的链接,但没有得到任何相关信息。如果您找到有关这方面的信息,请告诉我。
  • message.SenderEmailAddress
  • 如何使用主题过滤记录

标签: python python-3.x email outlook win32com


【解决方案1】:

应用程序参考的视觉基础是您的朋友。尝试从这个链接开始...

Interop Outlook Mailitem Properties

例如,我可以看到该消息可能具有比您上面列出的更多属性。例如。

  • message.CC
  • message.Importance
  • message.LastModificationTime

【讨论】:

  • 这是我正在寻找的确切文档,非常感谢您的帮助。
  • 我们没有在任何地方提供用户名和密码。那么 Outlook 如何对帐户进行身份验证。
  • @AbdulNiyasPM 通过本地 Outlook 应用程序还是不?
【解决方案2】:

对于想知道如何访问任何默认文件夹而不仅仅是“收件箱”的人来说,这里是列表:

3  Deleted Items
4  Outbox
5  Sent Items
6  Inbox
9  Calendar
10 Contacts
11 Journal
12 Notes
13 Tasks
14 Drafts

还有更多(提醒、同步错误等);您可以使用此代码获取整个列表(灵感来自 John Cook's solution 到文件夹):

import win32com
outlook=win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
for i in range(50):
    try:
        box = outlook.GetDefaultFolder(i)
        name = box.Name
        print(i, name)
    except:
        pass

我没有在此处粘贴整个列表,因为我的列表是波兰语,不会有什么帮助。

【讨论】:

  • 要使其正常工作,您可能需要将导入语句修改为:import win32com.client。最初,此解决方案在 Python 3.6 上无法正常工作。通过添加 .cleint 对其进行调整解决了该问题。
【解决方案3】:

我想我也应该添加一些关于浏览文件夹的内容 - 这一切都来自上面的 Microsoft 文档,但在这里可能会有所帮助,特别是如果你试图在 Outlook 文件夹结构中的任何位置,除了收件箱。

您可以使用folders 浏览文件夹集合 - 请注意,在这种情况下,GetNamespace 之后没有 GetDefaultFolder(否则您可能会看到收件箱)。

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace('MAPI')
folder = outlook.Folders[1]

数字是您要访问的文件夹的索引。要找出其中有多少子文件夹:

folder.Count

如果有更多子文件夹,您可以使用另一个Folders 更深入:

folder.Folders[2]

Folders 返回子文件夹列表,所以要获取当前目录下所有文件夹的名称,可以使用快速循环。

for i in range(folder.Count):
    print (folder[i].Name)

每个子文件夹都有一个.Items 方法来获取电子邮件列表。

【讨论】:

    【解决方案4】:

    您可以在OutlookSpy 中查看所有实时 Outlook 对象及其数据。

    MailItem 对象属性、方法和事件在https://msdn.microsoft.com/en-us/library/office/ff861332.aspx 有完整记录

    【讨论】:

      【解决方案5】:

      对于附件 https://docs.microsoft.com/en-us/office/vba/api/outlook.attachment (见属性)

      attachment.FileName
      attachment.Type
      attachment.Position
      attachment.BlockLevel
      attachment.Class
      attachment.DisplayName
      attachment.Parent
      attachment.Session
      attachment.Size
      attachment.Index
      attachment.Application
      

      【讨论】:

        【解决方案6】:

        这个页面绝对是pywin32最全的资源!

        只需添加一个:

         message.senton.date() # for received date only 
         message.senton.time() # for received time only
         message.senton # for date and time
        

        另外,刚刚发现上面基因组共享的“Interop Outlook Mailitem Properties”中显示的消息属性(如 senton、attachment 和所有其他属性)可以写为完全小写或完全大写或混合。

        【讨论】:

          猜你喜欢
          • 2023-01-26
          • 1970-01-01
          • 2018-03-18
          • 2022-01-13
          • 1970-01-01
          • 2011-12-21
          • 1970-01-01
          • 2015-11-19
          • 2022-06-13
          相关资源
          最近更新 更多