您可以使用 AdvancedSearch 方法搜索您的收件箱或任何其他文件夹:
library(RDCOMClient)
outlook_app <- COMCreate("Outlook.Application")
search <- outlook_app$AdvancedSearch(
"Inbox",
"urn:schemas:httpmail:subject = 'Super Important Email'"
)
这是一个 异步 方法,因此 R 在继续下一步之前不会等待搜索完成。虽然确实存在处理此问题的AdvancedSearchComplete 事件,但我无法弄清楚如何使用 RDCOMClient 执行此操作。作为一种解决方法,Sys.sleep(5) 应该给搜索足够的时间来完成。
您可以查看这些结果并使用ReceivedTime 方法查询它们的接收时间。要将这些时间转换为日期,请使用 1899 年 12 月 30 日的 Microsoft Office 基准日期:
results <- search$Results()
results$Item(1)$ReceivedTime() # Received time of first search result
as.Date("1899-12-30") + floor(results$Item(1)$ReceivedTime()) # Received date
我们现在可以查看在特定日期(例如 2017 年 8 月 14 日)收到的电子邮件的结果。
for (i in 1:results$Count()) {
if (as.Date("1899-12-30") + floor(results$Item(i)$ReceivedTime())
== as.Date("2017-08-14")) {
email <- results$Item(i)
}
}
我们可以像查看搜索结果一样查看电子邮件的附件。第一个附件是email$Attachments(1)(注意电子邮件签名中的图片;这些也会出现!)。如果您对特定附件感兴趣,可以使用FileName 方法找到它。找到所需的附件后,您可以将其保存到一个文件中,然后像使用其他文件一样开始使用它。
attachment_file <- tempfile()
email$Attachments(1)$SaveAsFile(attachment_file)
data <- read.csv(attachment_file)
我在这里使用了临时文件路径,但您当然可以将附件保存到永久位置。