library(RDCOMClient)
## create outlook object
OutApp <- COMCreate("Outlook.Application")
我想从名为“AUX”的 Outlook 文件夹中检索今天的电子邮件。解析电子邮件的标题,如果它满足某些条件,我想解析电子邮件的内容以获取某些字符串。
我设法从 R 写了一封电子邮件并将其发送出去,但到目前为止无法检索电子邮件。
library(RDCOMClient)
## create outlook object
OutApp <- COMCreate("Outlook.Application")
我想从名为“AUX”的 Outlook 文件夹中检索今天的电子邮件。解析电子邮件的标题,如果它满足某些条件,我想解析电子邮件的内容以获取某些字符串。
我设法从 R 写了一封电子邮件并将其发送出去,但到目前为止无法检索电子邮件。
这是我通过反复试验得到的一些示例代码:
library(RDCOMClient)
folderName = "AUX"
## create outlook object
OutApp <- COMCreate("Outlook.Application")
outlookNameSpace = OutApp$GetNameSpace("MAPI")
folder <- outlookNameSpace$Folders(1)$Folders(folderName)
# Check that we got the right folder
folder$Name(1)
emails <- folder$Items
# Just doing first 10, get total number with emails()$Count()
for (i in 1:10)
{
subject <- emails(i)$Subject(1)
# Replace "#78" with the text you are looking for in Email Subject line
if (grepl("#78", subject)[1]){
print(emails(i)$Body())
break
}
}
抱歉,但我不知道为什么其中一些 COM 对象需要参数(如 Subject(1)),而另一些则不需要(如 Body())。这在 Outlook 2013 上对我有用,但它也应该适用于从 2007 年开始的所有 Outlook 版本。
要获取有关 Outlook 对象模型的更多信息,我建议您获取Ken Slovak 的 Outlook 2007 书(对于更高版本的 Outlook 仍然相关),或者查看我的个人网站http://www.gregthatcher.com(查看“脚本”部分——我已经编译了很多年了。)
folderName = "foldername"
## create outlook object
OutApp <- COMCreate("Outlook.Application")
outlookNameSpace = OutApp$GetNameSpace("MAPI")
fld <- outlookNameSpace$GetDefaultFolder(6)
# Check that we got the right folder
fld = fld$folders(folderName)
Cnt = fld$Items()$Count()
emails <- fld$items
df = data.frame(sno = 1:Cnt,Text = "",stringsAsFactors=FALSE)
for(i in seq(Cnt)){
d = as.data.frame(emails(i)$Body(), stringsAsFactors=FALSE)
df$Text[i] = d[1]
df$Sender[i] = emails(i)[['SenderName']]
df$To[i] = emails(i)[['To']]
df$sub[i] = emails(i)[['subject']]
}