如果我想通过pop3或imap使用R查看outlook电子邮件的收件箱,我该怎么做?我需要从电子邮件收件箱下载(自动)一些附件到RStudio
发布于 2020-07-13 14:25:54
很抱歉回答得太晚了,但它可能对未来的访问者有用。
从2019年开始,你可以使用mRpostman从R内部执行IMAP命令。可以执行邮箱操作,消息搜索和获取等。从0.3.0版本开始,你也可以下载附件。
编辑2021年3月
从0.9.X版本开始,mRpostman开始采用R6语法。因此,以前版本中的大多数函数都变成了方法。这意味着它们现在应该以connection_object$method()的方式调用。
有关如何使用日期条件(在特定日期发送邮件)下载与以前邮件搜索相结合的附件的简单(已更新)示例如下:
步骤1)配置到Outlook服务器的连接:
请注意,url "imaps://outlook.office365.com"是使用Office365的服务器的默认值。
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/
EDIT 2:
有人问是否可以按时间戳进行搜索。尽管IMAP协议不支持这种搜索,但有一种老套的方法可以实现这一点。假设我们想要搜索所有在“早上7:30”收到的消息。从“2021年3月3日”开始。
con$search(AND(
since(date_char = "03-Mar-2021"),
string(expr="07:30", where = "HEADER Date")
))https://stackoverflow.com/questions/45714584
复制相似问题