Если я хочу проверить входящие сообщения электронной почты Outlook с помощью R, через pop3 или imap, как я могу это сделать? Мне нужно загрузить (автоматически) некоторые вложения из почтового ящика в RStudio
Как я могу получить доступ к электронной почте и получить входящие сообщения через pop3 или imap, используя язык R?
Ответы (1)
Извините за поздний ответ, но он может быть полезен будущим посетителям.
С 2019 года вы можете использовать mRpostman
для выполнения команд IMAP изнутри R. Можно выполнять операции с почтовым ящиком, искать и получать сообщения и т. Д. Начиная с версии 0.3.0, вы также можете загружать вложения.
ИЗМЕНИТЬ МАРТ 2021 г.
Начиная с версии 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="[email protected]",
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) Выберите папку INBOX
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()
Другой подход с оператором pipe %>%
:
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
создаст каталог [email protected]/INBOX, содержащий подпапки, соответствующие идентификаторам вашего сообщения (или сообщений). Внутри подпапок вы найдете вложения.
Примечание. Если вы пытаетесь получить большие файлы (и, следовательно, большие сообщения), может потребоваться увеличить аргумент timeout_ms
и / или buffersize
внутри configure_imap()
.
Для подробного ознакомления с функциями mRpostman посетите официальный сайт пакета: https://allanvc.github.io/mRpostman/
ИЗМЕНИТЬ 2:
Был задан вопрос, можно ли искать по метке времени. Хотя протокол IMAP не поддерживает такой поиск, для этого существует хитрый подход. Предположим, мы хотим найти все сообщения, полученные ровно в 07:30 с 3 марта 2021 года.
con$search(AND(
since(date_char = "03-Mar-2021"),
string(expr="07:30", where = "HEADER Date")
))
mRpostman
использует синтаксис R6
. Мой ответ теперь дополнен новым синтаксическим подходом, включая пример с поиском по дате. Если это было полезно, не забудьте проголосовать. Спасибо!
- person allanvc; 06.03.2021
since/before/on()
+ string()
. Я добавил это к своему ответу выше.
- person allanvc; 06.03.2021