我想在Python上创建一个自动化程序,它可以读取未读电子邮件的收件箱,我希望能够从主题行提取信息并将其放在Google Sheets上。
然而,我在尝试将每个电子邮件的主题行附加到列表中以进行一些字符串操作时遇到了麻烦。
import win32com.client as client
outlook = client.Dispatch('Outlook.Application')
namespace = outlook.GetNameSpace('MAPI')
account = namespace.Folders['test_email555@hotmail.com']
inbox = account.Folders['Inbox']
messages = inbox.Items
message = messages.GetLast()
emptyList = []
def test():
Macq_Inst = [message for message in inbox.Items if message.Unread == True]
for msg in Macq_Inst:
# emptyList.append(msg)
# print(emptyList)
print(type(msg))
for item in Macq_Inst:
date = item.SentOn.strftime("%m/%d/%Y, %H:%M:%S")
print(date)
test()
得到以下输出:
OutlookAutomation.py::test PASSED [100%][<COMObject <unknown>>, <COMObject <unknown>>, <COMObject <unknown>>, <COMObject <unknown>>]
[<COMObject <unknown>>, <COMObject <unknown>>, <COMObject <unknown>>, <COMObject <unknown>>, <COMObject <unknown>>]
[<COMObject <unknown>>, <COMObject <unknown>>, <COMObject <unknown>>, <COMObject <unknown>>, <COMObject <unknown>>, <COMObject <unknown>>]
10/25/2021, 22:26:16
10/25/2021, 22:26:36
10/25/2021, 22:26:48
如果我打印出msg变量,我得到我的3封邮件的主题行:
OutlookAutomation.py::test PASSED [100%]FW: Instructions – ExampleName1, ID-123345
FW: Instructions – ExampleName2, ID-123453
FW: Instructions – ExampleName3, ID-135241
10/25/2021, 22:26:16
10/25/2021, 22:26:36
10/25/2021, 22:26:48
我的msg变量返回以下类型:
OutlookAutomation.py::test PASSED [100%]<class 'win32com.client.CDispatch'>
<class 'win32com.client.CDispatch'>
<class 'win32com.client.CDispatch'>
10/25/2021, 22:26:16
10/25/2021, 22:26:36
10/25/2021, 22:26:48
是否有一种方法可以读取这个<类'win32com.client.CDispatch'>然后把它转换成字符串之类的,这样我就可以把它附加到空列表中了?
如果不可能,是否有其他方法可以做到这一点?
trystr(msg)
根据我对python的理解,你得到字符串消息的原因是因为它可能是str方法,该方法返回邮件对象的主题。默认情况下,print调用str方法。
所以如果你自己调用__str__
方法。你应该是金色的