【发布时间】:2017-03-14 02:43:23
【问题描述】:
我正在尝试创建一段代码来监视特定电子邮件的 Outlook 收件箱(该代码将电子邮件发送到其自己的电子邮件地址并希望收到该电子邮件)。我需要能够在电子邮件收件箱中搜索特定主题。
我查看了我可以在这里找到的唯一相关问题 - Searching For Phone Numbers In Email Subject,但它不能在 VB.NET 中编译,这行:
Set sch = Application.AdvancedSearch(strS, strF) 不同意。
有没有办法做到这一点?我的目标是发送电子邮件并在BackgroundWorker 上定期运行此代码,直到看到电子邮件(经过多次尝试后超时)。我只是找不到阅读主题行的方法。
提前致谢
编辑 1
只要弄清楚问题是什么:
Visual Studio 会自动删除 set。问题在于Application.AdvancedSearch,我收到错误:
“AdvancedSearch”不是“Systems.Windows.Form.Application”的成员
编辑 2
更新代码:
Sub TestAdvancedSearchComplete()
Dim ap As Outlook.Application
Dim sch As Outlook.Search
Dim rsts As Outlook.Results
Dim i As Integer
blnSearchComp = False
Const strF As String = "urn:schemas:mailheader:subject LIKE '%###%'"
Const strS As String = "Inbox"
sch = ap.AdvancedSearch(strS, strF)
While blnSearchComp = False
Application.DoEvents()
End While
rsts = sch.Results
For i = 1 To rsts.Count
MsgBox(rsts.Item(i).SenderName)
Next
End Sub
代码现在编译正常,但显示 ap 尚未分配值,我想我需要为它分配一个引用 Outlook 应用程序的值?
【问题讨论】:
-
您是否尝试将
Set替换为Dim? -
@ProGrammer 请查看更新后的问题
-
Application 指的是 Ouitlook.Application 对象的一个实例。您是否声明并初始化了该对象?
-
@DmitryStreblechenko 谢谢,感谢您的评论,我更新了我的问题
-
是的,你需要初始化它。