很抱歉回答迟了,但它可能对未来的访问者有用。
从 2019 年开始,您可以使用 mRpostman 从 R 内部执行 IMAP 命令。可以进行邮箱操作、邮件搜索和提取等。从 0.3.0 版本开始,您也可以下载附件。
2021 年 3 月编辑
从 v0.9.X 版本开始,mRpostman 开始采用R6 语法。因此,以前版本中的大部分函数都变成了方法。这意味着它们现在应该以connection_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)
步骤 2) 选择“收件箱”文件夹
con$select_folder(name = "INBOX")
步骤 3) 按特定条件/条件搜索消息,例如在特定日期收到的消息
res1 <- con$search_on(date_char = "02-Jan-2020")
第 4 步)备选方案 1:获取邮件内容(文本或正文)+ 提取附件
con$fetch_text() %>% # or with fetch_body()
con$get_attachments()
第 4 步)备选方案 2:直接获取附件
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/INBOX”目录,其中包含与您的消息(或消息)ID 匹配的子文件夹。在子文件夹中,您会遇到附件。
注意:如果您尝试获取大文件(进而获取大消息),可能需要在 configure_imap() 中增加 timeout_ms 和/或 buffersize 参数。
mRpostman的功能详细介绍请参考包官网:https://allanvc.github.io/mRpostman/
编辑 2:
询问是否可以按时间戳进行搜索。尽管 IMAP 协议不支持这种搜索,但有一种 hacky 方法可以实现这一点。假设我们想要搜索自“2021 年 3 月 3 日”以来恰好在“上午 07:30”收到的所有消息。
con$search(AND(
since(date_char = "03-Mar-2021"),
string(expr="07:30", where = "HEADER Date")
))