【发布时间】:2020-06-23 15:41:24
【问题描述】:
每次在调度系统中预订房间时,我都会收到一封自动电子邮件消息(在 Outlook 中),但随后必须检查并在另一个系统中反映该预订(这需要检查每个预订以获取特定信息并在收件箱中搜索)。我正在尝试确定是否有办法从消息部分中提取信息(我发现一些代码可以提取收到的日期、主题行以及阅读状态,但无法确定如何提取消息正文信息我需要)
我正在运行的代码由Jie Jenn提供:
Sub ListOutlookEmailInfoinExcel()
Dim olNS As Outlook.NameSpace
Dim olTaskFolder As Outlook.MAPIFolder
Dim olTask As Outlook.TaskItem
Dim olItems As Outlook.Items
Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook
Dim x As Long
Dim arrHeaders As Variant
Set olNS = GetNamespace("MAPI")
Set olTaskFolder = olNS.GetDefaultFolder(olFolderInbox)
Set olItems = olTaskFolder.Items
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlWB = xlApp.Workbooks.Add
On Error Resume Next
x = 2
arrHeaders = Array("Date Created", "Date Recieved", "Subject", "Unread?")
xlWB.Worksheets(1).Range("A1").Resize(1, UBound(arrHeaders)).Value = ""
Do
With xlWB.Worksheets(1)
If Not (olItems(x).Subjects = "" And olItems(x).CreationTime = "") Then
.Range("A1").Resize(1, UBound(arrHeaders) + 1) = arrHeaders
.Cells(x, 1).Value = olItems(x).CreationTime
.Cells(x, 2).Value = olItems(x).ReceivedTime
.Cells(x, 3).Value = olItems(x).Subject
.Cells(x, 4).Value = olItems(x).UnRead
x = x + 1
End If
End With
Loop Until x >= olItems.Count + 1
Set olNS = Nothing
Set olTaskFolder = Nothing
Set olItems = Nothing
Set xlApp = Nothing
Set xlWB = Nothing
End Sub
使用上面的代码,我可以读取主题行、创建/接收日期以及是否已阅读。此外,我正在尝试查看是否可以在消息本身中获取一些唯一的字符串数据。我收到的邮件格式如下:
消息 ID:示例信息
用户:测试
内容1:测试
内容2:测试
内容3:测试
如果您错误地收到此消息,请提交服务请求。
-新房间申请通知
赞助商:My_example@Test.com
活动类型:会议
事件标题:测试
预订日期:2015-12-02
房间:150
从:13:00 至:14:00
信息会因每个请求而异,但我想知道是否有人知道如何捕获将通过的唯一字符串,以便我可以保存比当前手动输入快得多的请求日志并仔细检查?
【问题讨论】:
-
相关文件夹是默认收件箱的子文件夹,还是与收件箱处于同一级别?
-
好吧,我原以为它应该是一个子文件夹,是否可以通过一般收件箱运行它(因为该帐户的 99% 的电子邮件只是那些特定的电子邮件)?