如何使用R语言通过pop3或imap访问电子邮件并获取收件箱消息?
如果我想通过pop3或imap使用R查看outlook电子邮件的收件箱,我该怎么做?如何使用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
我需要(自动)将一些附件从电子邮件收件箱下载到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")
))