Python Outlook 收件箱保存附件 win32com.client
Python Outlook inbox saving attachments win32com.client
我已经获得了一些我想要的功能,但还需要其他 2 个功能的帮助。
我想标记消息“标记为完成”(这是标记状态之一)。我还没有找到如何做到这一点。
如果我想对另外 4 封电子邮件做同样的事情,我会怎么做,还有另外 4 条保存路径?
import win32com.client
import os
Outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inboxfolder = Outlook.GetDefaultFolder(6) # "6" refers to the index of a folder - in this case the inbox. You can change that number to reference
inbox = inboxfolder.Items
message = inbox.GetFirst()
subject = message.Subject
sender = message.SenderEmailAddress
for m in inbox:
if m.Class == 43: # this is to make sure it is an email item and not something else.
if m.SenderEmailAddress == 'John@email.com' and m.Unread == True:
path = 'C:\User\Path\Data\John'
print ('Subject as: ' and message)
for attached in message.Attachments:
attached.SaveASFile(os.path.join(path,attached.FileName)) #Saves attachment to current folder
print (attached)
message.Unread = False
print (message.FlagStatus)
message.FlagStatus = 1 # This is to "mark as Done" but it doesn't work
message = inbox.GetNext()
elif m.SenderEmailAddress == 'Jane@email.com' and m.Unread == True:
path = 'C:\User\Path\Data\Jane'
# ... How would you add 4 more?
message = inbox.GetNext()
else:
message = inbox.GetNext()
你必须保存它message.Save()
,例子
import win32com.client
Outlook = win32com.client.Dispatch("Outlook.Application")
olNs = Outlook.GetNamespace("MAPI")
Inbox = olNs.GetDefaultFolder(win32com.client.constants.olFolderInbox)
for Item in Inbox.Items:
if Item.Class == 43:
Item.FlagStatus = 1
Item.Save()
对于多个电子邮件和路径使用 dictionary,示例
emails_with_path = {
"email@one.com": "path_one",
"email@two.com": "path_two",
"email@three.com": "path_three"
}
for m in inbox:
if m.Class == 43:
for email, path in emails_with_path.items():
if m.SenderEmailAddress == email and m.UnRead:
print(email)
print(path)
我已经获得了一些我想要的功能,但还需要其他 2 个功能的帮助。
我想标记消息“标记为完成”(这是标记状态之一)。我还没有找到如何做到这一点。
如果我想对另外 4 封电子邮件做同样的事情,我会怎么做,还有另外 4 条保存路径?
import win32com.client
import os
Outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inboxfolder = Outlook.GetDefaultFolder(6) # "6" refers to the index of a folder - in this case the inbox. You can change that number to reference
inbox = inboxfolder.Items
message = inbox.GetFirst()
subject = message.Subject
sender = message.SenderEmailAddress
for m in inbox:
if m.Class == 43: # this is to make sure it is an email item and not something else.
if m.SenderEmailAddress == 'John@email.com' and m.Unread == True:
path = 'C:\User\Path\Data\John'
print ('Subject as: ' and message)
for attached in message.Attachments:
attached.SaveASFile(os.path.join(path,attached.FileName)) #Saves attachment to current folder
print (attached)
message.Unread = False
print (message.FlagStatus)
message.FlagStatus = 1 # This is to "mark as Done" but it doesn't work
message = inbox.GetNext()
elif m.SenderEmailAddress == 'Jane@email.com' and m.Unread == True:
path = 'C:\User\Path\Data\Jane'
# ... How would you add 4 more?
message = inbox.GetNext()
else:
message = inbox.GetNext()
你必须保存它message.Save()
,例子
import win32com.client
Outlook = win32com.client.Dispatch("Outlook.Application")
olNs = Outlook.GetNamespace("MAPI")
Inbox = olNs.GetDefaultFolder(win32com.client.constants.olFolderInbox)
for Item in Inbox.Items:
if Item.Class == 43:
Item.FlagStatus = 1
Item.Save()
对于多个电子邮件和路径使用 dictionary,示例
emails_with_path = {
"email@one.com": "path_one",
"email@two.com": "path_two",
"email@three.com": "path_three"
}
for m in inbox:
if m.Class == 43:
for email, path in emails_with_path.items():
if m.SenderEmailAddress == email and m.UnRead:
print(email)
print(path)