我可以通过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()
答案 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