每週日我收到一封電子郵件,附帶一個壓縮文件夾。電子郵件的主題從不改變。我想找到具有指定主題行的最新電子郵件並下載附件。我是新的R用戶,到目前爲止,我只找到一種方法打印基於主題的電子郵件正文(從其他問題之一詢問在stackoverflow How to retrieve Outlook inbox emails using R RDCOMClient?)。 理想情況下,我想找到具有指定日期收到的指定主題的電子郵件,然後下載附件。請有人指點我正確的方向。任何幫助將不勝感激。謝謝。使用R從Outlook電子郵件下載附件
2
A
回答
5
你可以搜索你的收件箱,或任何其他文件夾,使用方法填寫AdvancedSearch:
library(RDCOMClient)
outlook_app <- COMCreate("Outlook.Application")
search <- outlook_app$AdvancedSearch(
"Inbox",
"urn:schemas:httpmail:subject = 'Super Important Email'"
)
這是一個異步方法,所以R將不會等待搜索到移動之前完成下一步。雖然確實存在一個AdvancedSearchComplete
事件來處理這個問題,但我一直無法解決如何使用RDCOMClient完成此操作。作爲一種解決方法,Sys.sleep(5)
應該給搜索足夠的時間來完成。
您可以查看這些結果並使用ReceivedTime
方法查詢它們的接收時間。在這些時間轉換爲日期,使用1899年12月30日的微軟辦公基地日期:
results <- search$Results()
results$Item(1)$ReceivedTime() # Received time of first search result
as.Date("1899-12-30") + floor(results$Item(1)$ReceivedTime()) # Received date
現在我們可以看看通過對在特定日期收到一封電子郵件,結果,說8月14日,2017年
for (i in 1:results$Count()) {
if (as.Date("1899-12-30") + floor(results$Item(i)$ReceivedTime())
== as.Date("2017-08-14")) {
email <- results$Item(i)
}
}
我們可以查看電子郵件的附件,類似於我們通過搜索結果查看的內容。第一個附件將是email$Attachments(1)
(請注意電子郵件簽名中的圖片;這些圖片也會顯示出來!)。如果您對某個附件感興趣,可以使用FileName
方法找到它。一旦你找到了你想要的附件,你可以將它保存到一個文件並開始使用它,就好像它是任何其他文件一樣。
attachment_file <- tempfile()
email$Attachments(1)$SaveAsFile(attachment_file)
data <- read.csv(attachment_file)
我在這裏使用的臨時文件路徑,但你可以在附件當然保存到永久位置。
相關問題
- 1. 從Outlook 2007下載電子郵件附件
- 2. 從MS Outlook的未讀電子郵件下載附件
- 3. 從電子郵件下載附件
- 4. Outlook IMAP已完成電子郵件和附件下載事件
- 5. 使用PowerShell從outlook下載電子郵件?
- 6. Outlook API電子郵件附件問題
- 7. 刪除電子郵件附件在Outlook
- 8. 轉發Outlook電子郵件附件
- 9. 下載並保存Outlook郵件附件與R
- 10. 如何使用IMAP和PHP下載電子郵件附件?
- 11. 使用SSIS下載電子郵件附件
- 12. 使用JAVAX api下載電子郵件附件
- 13. 使用java下載電子郵件附件
- 14. 從Outlook中保存電子郵件附件文件
- 15. 使用VBA在Outlook電子郵件中附加文件
- 16. 上傳電子郵件附件使用Outlook VBA雲存儲
- 17. 使用clickonce和文件關聯從Outlook電子郵件打開文件附件
- 18. 如何從gmail下載很多電子郵件附件
- 19. 從Microsoft Exchange Server讀取電子郵件並下載附件
- 20. 如何使用R RDCOMClient檢索Outlook收件箱電子郵件?
- 21. 從Outlook中檢索電子郵件附件
- 22. 從Outlook電子郵件中提取msg附件
- 23. 以編程方式從Outlook下載多個電子郵件
- 24. 使用VBA從outlook電子郵件地址發送電子郵件
- 25. 使用VBA從Outlook電子郵件正文中提取電子郵件地址?
- 26. 使用不同的Outlook電子郵件地址從Access發送電子郵件
- 27. 如何使用oauth從Google Gmail API下載或閱讀電子郵件附件?
- 28. 電子郵件附件使用log4j.smtpAppender
- 29. 如何從使用Java的Outlook電子郵件2010中提取附件?
- 30. 使用Gmail發送包含R的附件的電子郵件
這對我的需求絕對完美。非常感謝!很酷 –
@mdneuzerling - 謝謝。我嘗試過,但我得到的是搜索是類COMIDispatch的一個對象。我沒有看到電子郵件。你能否提供一個洞察我可能會做錯的事情。謝謝! – asmi
@asmi您可以使用Results()方法從搜索中提取結果,使用Item()從結果中提取電子郵件。例如,搜索$ Results()$ Item(1)'將成爲搜索結果中的第一個(通常是最早的)電子郵件。它將是一個COMIDispatch對象,所以你必須使用方法來詢問它,例如。 '$搜索結果()$項目(1)$主題()'。有關更多詳細信息,請參閱[這裏](https://msdn.microsoft.com/en-us/vba/outlook-vba/articles/mailitem-object-outlook)。不要忘記括號,也:'主題()'將工作,但「主題」不會。 – mdneuzerling