RDCOMClient + Outlook电子邮件+附件文件名

时间:2018-07-03 12:58:51

标签: r outlook rdcomclient

我正在尝试使用r中的RDCOM客户端获取邮件中附件的名称。

我能够获取主题名称以及正文中的文字

但是我无法弄清楚附件的名称

OutApp <- COMCreate("Outlook.Application")
outlookNameSpace = OutApp$GetNameSpace("MAPI")
folder <- outlookNameSpace$Folders(1)$Folders(1)
emails <- folder$Items
emails(1)[['Subject']] #Gives me name of subject
emails(1)[['body']] # give me text in body of the mail
emails(1)[['attachments']] # Doesn't give me text. It gives me a pointer like 
below

An object of class "COMIDispatch"
Slot "ref":
<pointer: 0x0000000008479448>

有人可以帮助我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

以下内容将创建一个包含电子邮件中所有附件名称的向量。

library(RDCOMClient)

OutApp <- COMCreate("Outlook.Application")
outlookNameSpace = OutApp$GetNameSpace("MAPI")

folder <- outlookNameSpace$Folders(1)$Folders(1)

emails <- folder$Items
emails(1)[['Subject']] #Gives me name of subject
emails(1)[['body']] # give me text in body of the mail

attachments.obj <- emails(1)[['attachments']] # Gets the attachment object
attachments <- character() # Create an empty vector for attachment names

if(attachments.obj$Count() > 0){ # Check if there are attachments
  for(i in c(1:attachments.obj$Count())){ # Loop through attachments
    attachments <- append(attachments, attachments.obj$Item(i)[['DisplayName']]) # Add attachment name to vector
  }
}

print(attachments)

答案 1 :(得分:0)

MailItem类的Attachments属性返回一个Attachments对象,该对象表示指定项目的所有附件。那是一个集合。

我不熟悉R语法,因此我将在此处粘贴C#示例代码:

for (int i = 1; i <= newEmail.Attachments.Count; i++)
{
   newEmail.Attachments[i].SaveAsFile(@"C:\TestFileSave\" +
    newEmail.Attachments[i].FileName);
}