如何使用R语言通过pop3或imap访问电子邮件并获取收件箱消息?

如何使用R语言通过pop3或imap访问电子邮件并获取收件箱消息?,r,imap,pop3,R,Imap,Pop3,如果我想通过pop3或imap使用R查看outlook电子邮件的收件箱,我该怎么做? 我需要(自动)将一些附件从电子邮件收件箱下载到RStudio,抱歉回答得太晚,但这可能对未来的访问者有用 从2019年起,您可以使用mRpostman从R内部执行IMAP命令。可以执行邮箱操作、邮件搜索和获取等。从0.3.0版开始,您也可以下载附件 编辑2021年3月 从v0.9.X版开始,mRpostman开始采用R6语法。因此,以前版本中的大多数函数都变成了方法。这意味着现在应该以connection\u

如果我想通过pop3或imap使用R查看outlook电子邮件的收件箱,我该怎么做?
我需要(自动)将一些附件从电子邮件收件箱下载到RStudio,抱歉回答得太晚,但这可能对未来的访问者有用

从2019年起,您可以使用
mRpostman
从R内部执行IMAP命令。可以执行邮箱操作、邮件搜索和获取等。从0.3.0版开始,您也可以下载附件

编辑2021年3月

从v0.9.X版开始,mRpostman开始采用
R6
语法。因此,以前版本中的大多数函数都变成了方法。这意味着现在应该以
connection\u object$method()
的方式调用它们

以下是一个简单(更新)的示例,说明如何使用日期标准(在特定日期发送的邮件)结合以前的邮件搜索下载附件:

步骤1)配置与Outlook服务器的连接:

请注意,url
“imaps://outlook.office365.com“
是使用Office 365的服务器的默认设置

con <- configure_imap(url="imaps://outlook.office365.com",
                  username="your_user@company.com",
                  password=rstudioapi::askForPassword())

#  other IMAP providers that were tested: Hotmail ("imaps://imap-mail.outlook.com"),
#  Gmail (imaps://imap.gmail.com), Yahoo (imaps://imap.mail.yahoo.com/), 
#  AOL (imaps://export.imap.aol.com/), Yandex (imaps://imap.yandex.com)
步骤3)按特定标准搜索消息,例如在特定日期收到的消息

res1 <- con$search_on(date_char = "02-Jan-2020")
步骤4)备选方案2:直接获取附件

con$fetch_text() %>% # or with fetch_body()
  con$get_attachments()
con$fetch_attachments()
管道
%%>%%
操作员的不同方法:

con$search_on(date_char = "02-Jan-2020") %>%
  con$fetch_text() %>% # or with fetch_body()
  con$get_attachments()

# OR

con$search_on(date_char = "02-Jan-2020") %>%
  con$fetch_attachments()
因此,在所有这些示例中,
mRpostman
将创建一个“user@server.com/“收件箱”目录,其中包含与邮件id匹配的子文件夹。在子文件夹中,您将遇到附件

注意:如果您试图获取大文件(以及因此产生的大消息),可能需要增加
超时\u ms
和/或
缓冲区大小
内的
配置imap()
参数

有关mRpostman功能的详细介绍,请访问该软件包的官方网站:

编辑2:

有人问,是否可以按时间戳进行搜索。尽管IMAP协议不支持这种搜索,但有一种黑客方法可以实现这一点。假设我们希望搜索自“2021年3月3日”以来在上午7:30收到的所有邮件


我没有看到任何当前的R包;但是你为什么要这样做?@Max我需要(自动)从收件箱下载一些附件到RSTUDIO你能用其他语言编写一个脚本,比如Python或Java,然后把它们放在文件系统的某个地方让R访问吗?也许这是一个选项,谢谢Allan!是否可以基于日期/时间戳进行搜索?运行此代码获取电子邮件附件时,我收到以下错误:get_attachments(.)中的错误:找不到函数“get_attachments”。关于您提到的错误,这是因为我的答案已过时。从0.9.X版开始,
mRpostman
使用
R6
语法。我的答案现在用新的语法方法更新了,包括一个基于日期搜索的示例。如果有用的话,请别忘了投票。谢谢嗨,马特。不客气!可以按日期搜索,但不能按时间戳搜索。根据RFC 3501,IMAP协议不支持这种类型的搜索。然而,有一种黑客方法可以通过自定义搜索组合
自/之前/开()
+
字符串()
来实现这一点。我已经在上面的答案中添加了这一点。
con$search_on(date_char = "02-Jan-2020") %>%
  con$fetch_text() %>% # or with fetch_body()
  con$get_attachments()

# OR

con$search_on(date_char = "02-Jan-2020") %>%
  con$fetch_attachments()
con$search(AND(
   since(date_char = "03-Mar-2021"),
   string(expr="07:30", where = "HEADER Date")
))