【问题标题】:RDCOMClient + Outlook email + Attachment filenameRDCOMClient + Outlook 电子邮件 + 附件文件名
【发布时间】:2018-07-03 12:58:50
【问题描述】:

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

谁能帮我解决这个问题?

【问题讨论】:

  • 它是零个或多个项目的集合,就像 folder$Items 是电子邮件的集合。

标签: r outlook rdcomclient


【解决方案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)

【讨论】:

    【解决方案2】:

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

    我对R语法不熟悉,这里贴一段C#示例代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 2020-11-21
      • 1970-01-01
      相关资源
      最近更新 更多