从附件中提取Zip + CSV文件w /图像在电子邮件正文中

时间:2018-02-08 21:55:22

标签: r email-attachments unzip sendmailr rdcomclient

我每天收到一封电子邮件,其中附件包含1个包含1个csv文件的zip文件。

在我的电子邮件正文中,有一张图片被我认为是另一种附件。

enter image description here

当电子邮件正文中只有文本但是使用“Adobe Marketing Cloud”图像时,下面的脚本有效,它会搞砸脚本。

有没有办法我只能阅读第一个附件阅读(假设这将是zip文件)?

这是我的剧本:

library(readr)
library(RDCOMClient)
outlook_app <- COMCreate("Outlook.Application")
search <- outlook_app$AdvancedSearch(
  "Inbox",
  "urn:schemas:httpmail:subject = 'SUBJECTNAME'"
)

Sys.sleep(5) # Wait a hot sec!


results <- search$Results() # Saves search results into results object

Sys.sleep(5) # Wait a hot sec!

results$Item(1)$ReceivedTime() # Received time of first search result

as.Date("1899-12-30") + floor(results$Item(1)$ReceivedTime()) # Received 
date

# Iterates through results object to pull out all of the items
for (i in 1:results$Count()) {
  if (as.Date("1899-12-30") + floor(results$Item(i)$ReceivedTime()) 
      == as.Date(Sys.Date())) {
    email <- results$Item(i)
  }
}

attachment_file <- tempfile()
email$Attachments(1)$SaveAsFile(attachment_file)

##Automatically Determine csv file name
file_name<-unzip(attachment_file,list=TRUE)
csv_file<-file_name$Name

##Read CSV File
newly_read_data <- read_csv(unz(attachment_file,csv_file))

错误来自:

file_name<-unzip(attachment_file,list=TRUE)
Error in unzip(attachment_file, list = TRUE) : 
  zip file 'C:\Temp\Rtmp86Gnzp\file29904a23387b' cannot be opened

任何帮助都会很棒,谢谢!

1 个答案:

答案 0 :(得分:1)

根据某些未知顺序,

email$Attachments(1)$SaveAsFile(attachment_file)会将第一个附件保存到attachment_file定义的文件路径中。如果您确定只有一个带有“.zip”扩展名的文件,那么您可以使用FileName方法检查附件的名称是否包含“.zip”:

attachment_file <- tempfile()

for (i in 1:email$Attachments()$Count()) {
    attachment <- email$Attachments(i)
    if (grepl(".zip", attachment$FileName(), ignore.case = TRUE)) {
        attachment$SaveAsFile(attachment_file)
    }
}