library("tm")
library("NLP")
library("dplyr")
library("readtext")
library("readxl")
library("foreach")
library("devtools")
library("RDCOMClient")
library("rlist")
WDF = vector()
OutApp <- COMCreate("Outlook.Application")
outlookNameSpace = OutApp$GetNameSpace("MAPI")
folderName = "Folder Name"
fld <- outlookNameSpace$GetDefaultFolder(6)
fld = fld$folders(folderName)
Cnt = fld$Items()$Count()
emails <- fld$items
df = data.frame(sno = 1:Cnt,Text = "",stringsAsFactors=FALSE)
for(i in 1:10){
d = as.data.frame(emails(i)$Body(), stringsAsFactors=FALSE)
df$Text[i] = d[1]
df$Sender[i] = emails(i)[['SenderName']]
df$To[i] = emails(i)[['To']]
df$sub[i] = emails(i)[['subject']]
}
emails(2)[['SenderName']]
我正在尝试通过使用以下代码来获取发件人的电子邮件地址:
emails(2)[['SenderEmailAddress']]
但是最终却给出了这样的内容:
[1] "/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=E4CD239AB9F44AC4AC0A4015B6F4805A-RATINGSDIRE"
问题是,Exchange将发件人地址存储为外部用户的普通smtp版本,但对于Exchange用户,它使用MS Exchange地址。要获取正常的smtp地址,您必须查找交换用户并获取其正常的smtp电子邮件地址。
您可能想看看github上的extrospectr
包。我没有使用过,但看起来像您想要的一样,它会为您提供干净的收件箱。
如果您查看文件.lookup_exchange_sender
中的read_inbox.R
函数,它将显示他们如何处理查找地址。首先,您必须查看所使用的用户地址的类型,然后,如果它是Exchange用户,则使用类似ol$GetItemFromID(2)$Sender()GetExchangeUser()$PrimarySMTPAddress()
(此处基于extropectr软件包中的内容进行粗略猜测)之类的内容来获取smtp电子邮件地址以交换用户。 >
链接到github上的extrospectr
:https://github.com/aecoleman/extrospectr
这说明了发件人电子邮件属性中存储内容的Outlook方法:SenderEmailAddress property does not contain a standard email address for internal contacts