Python阅读Outlook

时间:2015-07-02 18:05:34

标签: python email csv outlook

我可以通过Outlook阅读上一封电子邮件,并根据每行的内容发送所有结果。

但是,我无法找到将最近10封电子邮件添加到fileCollect.txt文件中的方法。

我有什么想法可以做到这一点?这是我目前的代码:


import win32com.client
import csv

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

inbox = outlook.GetDefaultFolder(6) # "6" refers to the index of a folder - in this case,
                                    # the inbox. You can change that number to reference
                                    # any other folder


messages = inbox.Items
message = messages.GetLast()



fileCollect = open("fileCollect.txt",'a')
delimiter = "¿"
fileCollect.write( str(message.Sender) + delimiter + str(message.Subject)+ delimiter + str(message.Body) )
fileCollect.close()


csvfile = open("csvfile.csv",'a')

with open("fileCollect.txt","r") as outfile:
    for line in outfile:
        if line.find("test") != -1:
            csvfile.write(line)

csvfile.close()

2 个答案:

答案 0 :(得分:1)

您可以通过指定否定索引来获取最后10条消息:

last_10_messages = messages[-10:]

这将从消息[-10](消息数组中的第10个消息到消息数组中的最后一条消息)返回一个数组。

答案 1 :(得分:0)

在您通过调用Items.Sort对其进行实际排序之前,Items集合不会按任何特定顺序排序。下面的VB脚本按递减顺序按ReceivedTime对集合进行排序:

set messages = inbox.Items
messages.Sort("ReceivedTime", true)
set message = messages.GetFirst()
while not (message Is Nothing)
  MsgBox message.Subject
  set message = messages.GetNext()
wend