RDCOMClient + электронная почта Outlook + имя файла вложения - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь получить имя вложения в письме с помощью клиента RDCOM в r.

Я могу получить название темы, а также текст в теле

Но я не могу понять, как получить имя вложения

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 голосов
/ 03 июля 2018

Ниже будет создан вектор, содержащий имена всех вложений в электронном письме.

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)
0 голосов
/ 03 июля 2018

Свойство Attachments класса MailItem возвращает объект Attachments , который представляет все вложения для указанного элемента. Это коллекция.

Я не знаком с синтаксисом R, поэтому я вставлю сюда пример кода C #:

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