Как взаимодействовать с конкретным письмом в outlook? - PullRequest
0 голосов
/ 07 октября 2018

Я пытался прочитать текст электронных писем, которые получал в Outlook, но я мог читать свои электронные письма только с моего первого адреса электронной почты.Есть ли способ выбрать адрес электронной почты, который должен быть прочитан?Например, адрес электронной почты в моей учетной записи outlook?

import win32com.client

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

inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items
message = messages.GetFirst()
body = message.body
subject = message.subject
sender = message.sender

while message:
    print("Subject: " + subject
    + "\tSender: " + str(sender)
    + "\nBody: " + body
    + "\n"
    )
    message = messages.GetNext()

Я уже пытался дать «Входящие» второй аргумент, потому что я думал, что могу выбрать это письмо, но это только дало мнеошибки.

inbox = outlook.GetDefaultFolder(4, 6)

Так есть ли умный и простой способ выбрать адрес электронной почты, который вы хотите прочитать?

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Вы можете использовать свойство DeliveryStore Учетной записи, чтобы получить входящие.Например:

Sub ResolveName()
Dim ns As NameSpace
Set ns = Application.Session
Dim acc As Account
Dim f As Folder

For Each acc In ns.accounts
    MsgBox acc.UserName
    If acc = "text@outlook.com" Then
    Set f = acc.DeliveryStore.GetDefaultFolder(olFolderInbox)
    MsgBox f.Items.count

End If
Next
End Sub

Вы можете фильтровать, используя acc = "text@outlook.com" или свойство acc.UserName.

0 голосов
/ 07 октября 2018

Вы можете войти в указанный почтовый профиль:
(пример кода взят из Tim Golden's Python Stuff )

import win32com.client

session = win32com.client.gencache.EnsureDispatch ("MAPI.Session")

#
# Leave blank to be prompted for a session, or use
# your own profile name if not "Outlook". It is also
# possible to pull the default profile from the registry.
#
session.Logon ("Outlook")
messages = session.Inbox.Messages

#
# Although the inbox_messages collection can be accessed
# via getitem-style calls (inbox_messages[1] etc.) this
# is the recommended approach from Microsoft since the
# Inbox can mutate while you're iterating.
#
message = messages.GetFirst ()
while message:
  print message.Subject
  message = messages.GetNext ()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...