12
library(RDCOMClient)
## create outlook object
OutApp <- COMCreate("Outlook.Application")

我想从名为“AUX”的 Outlook 文件夹中检索今天的电子邮件。解析电子邮件的标题,如果它满足某些条件,我想解析电子邮件的内容以获取某些字符串。

我设法从 R 写了一封电子邮件并将其发送出去,但到目前为止无法检索电子邮件。

4

2 回答 2

13

这是我通过反复试验得到的一些示例代码:

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(查看“脚本”部分——我已经编译了很多年了。)

于 2017-03-04T01:05:33.303 回答
3
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']]
}
于 2019-03-22T07:15:50.353 回答