2

我正在尝试使用 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>

谁能帮我解决这个问题?

4

2 回答 2

2

下面将创建一个包含电子邮件上所有附件名称的向量。

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)
于 2018-07-03T14:59:46.593 回答
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);
}
于 2018-07-03T14:02:57.443 回答