r - 有没有办法使用 R、RDCOMClient 查找/读取发件人电子邮件地址

标签 r email outlook sender rdcomclient

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 电子邮件地址。

您可能想查看 extrospectr在github上打包。我没有使用过它,但看起来它会给你一个干净的收件箱,就像你正在寻找的那样。

如果你看 .lookup_exchange_sender文件中的函数 read_inbox.R它显示了他们如何处理查找地址。首先你要看看Sender是什么类型的用户是(您可以通过检索 MailItem 的 Sender 属性,然后检索具有 AddressEntryUserType 枚举的 this 属性来实现)。这最终就像 emails(2)$Sender()$AddressEntryUserType() .

然后,如果它是 Exchange 用户,则需要获取 Sender MailItem 的属性(它是 AddressEntry ),然后使用 GetExchangeUser AddressEntry 上的方法返回 ExchangeUser目的。一旦你有了它,你只需要访问 ExchangeUser 的 PrimarrySMTPAddress 属性。
当你把它们放在一起时,它看起来是这样的:emails(2)$Sender()$GetExchangeUser()$PrimarySMTPAddress() .

链接到 extrospectr在github上:
https://github.com/aecoleman/extrospectr

这解释了存储在发件人电子邮件属性中的内容的 Outlook 方法:
SenderEmailAddress property does not contain a standard email address for internal contacts

关于r - 有没有办法使用 R、RDCOMClient 查找/读取发件人电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60196525/

相关文章:

r - 对齐R中字符矩阵中的行

PHP——获取主题行中的时间

java - 尝试使用 JavaMail 提取 POP3 收件箱文件夹时,我没有收到任何电子邮件

macos - 如何以编程方式在 Outlook Mac 2011 中创建按钮?

html - outlook 2010 卡住列标题

r - 如何反转R中的矩阵?

r - 将科学计数法 +e 转换为 geom_text 中带上标的 10^(y)

oop - 如何定义 S4 类的子集运算符?

ruby-on-rails - 如何在 Ruby on Rails 中发送和接收加密的电子邮件?

html - 使用 mailto : under ASP. NET 的邮件主题中出现乱码