2

我目前正在构建一些代码来搜索我的电子邮件以查找特定主题,然后在电子邮件正文中搜索某些特定术语,然后从中取出逗号分隔的数据。但是我现在遇到了一个我以前从未见过的问题,而且最近才开始出现。

每当代码到达:

inbox <- outlookNameSpace$Folders(6)$Folders("Inbox")

我收到以下错误:

<checkErrorInfo> 80020009 
No support for InterfaceSupportsErrorInfo
checkErrorInfo -2147352567
Error: Exception occurred.

现在我看到人们在这个地方遇到类似的错误,但他们似乎是在处理发送电子邮件而不是搜索特定的电子邮件。

我想知道是否有人对如何解决这个问题有任何建议?

完整代码:

library(RDCOMClient)

Fruit_1 <- "Apples"
Fruit_2 <- "Pears"
##Create vector to store searchables
searchf <- c(Fruit_1, Fruit_2)
## create object for outlook
OutApp <- COMCreate("Outlook.Application")
outlookNameSpace = OutApp$GetNameSpace("MAPI")

search <- OutApp$AdvancedSearch("Inbox", "urn:schemas:httpmail:subject = 'FRUIT QUANTITIES'")
inbox <- outlookNameSpace$Folders(6)$Folders("Inbox")

vec <- c()

get_vals <- function(report,searches) {
  data <- read.table(text=report,sep=",")
  colnames(data) <- c('key','value')
  
  date <- data[grepl("date",data$key,ignore.case=T),"value"]
  
  lst <- split(data$value,data$key)
  
  c(list(date=date),lst[searches])
}

for (x in emails)
{
  subject <- emails(i)$Subject(1)
  if (grepl(search, subject)[1])
  {
    text <- emails(i)$Body()
    print(text)
    break
  }
}
4

3 回答 3

2

原来失败的原因是 R 运行了太多的代码行。因此,在“搜索”变量之后添加 Sys.sleep(5) 解决了这个问题。

所以我的代码看起来像:

search <- OutApp$AdvancedSearch("Inbox", "urn:schemas:httpmail:subject = 'FRUIT QUANTITIES'")
Sys.sleep(5)
于 2022-02-01T16:51:59.173 回答
1

为什么要硬编码邮箱索引 (6)?如果您需要默认收件箱,请使用Namespace.GetDefaultFolder(olFolderInbox). 如果您需要特定邮箱,请使用其名称而不是索引。

于 2022-02-01T13:40:11.097 回答
0

尝试替换以下代码行的顺序:

inbox <- outlookNameSpace$Folders(6)$Folders("Inbox")

search <- OutApp$AdvancedSearch("Inbox", "urn:schemas:httpmail:subject = 'FRUIT QUANTITIES'")

该类的AdvancedSearch方法Application基于辅助线程上指定的 DAV 搜索和定位 (DASL) 搜索字符串执行搜索。因此,您应该知道,以编程方式创建大量搜索文件夹可能会导致大量同时进行的搜索活动,这会影响 Outlook 的性能,尤其是当 Outlook 在联机 Exchange 模式下进行搜索时。

在代码中,我没有找到您如何处理搜索结果,但您可能对处理方法完成时触发的Application.AdvancedSearchComplete事件感兴趣。AdvancedSearch

但是,如果您需要在单个文件夹中搜索项目(例如在您的代码中),您可以使用同步方法,例如Find/FindNextRestrict方法。您可以在以下文章中阅读有关它们的更多信息:

于 2022-02-01T20:52:35.043 回答