【问题标题】:Check if an email has NOT been received检查是否未收到电子邮件
【发布时间】:2014-05-30 08:56:40
【问题描述】:

我每个工作日都会收到两次电子邮件报告。有时,发送这些报告的机器会崩溃,并且不会发送任何电子邮件。我想要做的是使用一些 Outlook VBA 检查电子邮件是否在 12:15 和 17:05 未到达。

找到那里的电子邮件相当容易,但是找到一个不存在的电子邮件让我有点摸不着头脑。我现在设置了一个类模块(我认为这将是要走的路),并且如果没有收到电子邮件,我有我想做的代码,但不知道如何去检查电子邮件那些时候。这可能很简单,但以前没有真正在 Outlook VBA 中编写过脚本,所以不知道从哪里开始。

【问题讨论】:

  • 我想知道为什么您需要为此使用 VBA?您不能简单地检查您的收件箱,按日期排序,然后自己查看电子邮件是否存在(或不存在)?否则,您对电子邮件了解哪些信息(发件人、主题行等)?您当然可以做一些事情来查找具有某些参数的电子邮件。
  • 这是因为我通常在午餐时间已经有另外 50 封左右的电子邮件需要注意,然后第二封是在我晚上完成之后。现在拼凑出一个解决方法,我监控我创建的日常任务并检查在它触发前一分钟到达的电子邮件,但它还没有完全工作。持续监视会更好(类似于 .net 中的 FileSystemWatcher),但不确定这是否可以在 Outlook VBA 中完成
  • 您对电子邮件了解哪些信息(发件人、主题行等)?
  • 发件人始终相同,附件文件名始终相同。主题相同,只是日期发生变化(只是使用 Like xxx* 而不是日期处理)
  • 我仍然认为您可以按发件人对收件箱进行排序,无论它是否存在,但您对电子邮件的了解足够,您当然可以在 VBA 中执行某些操作来运行一些程序at a specific time each day,然后使用VBA按发件人查询项目,并检查项目的.ReceivedTime

标签: vba email outlook


【解决方案1】:

评论中指出的方法。

Outlook VBA - Run a code every half an hour

Outlook VBA - Run a code every half an hour with outlook 2010 64 bits

一个可能更简单的选择。设置带有提醒的重复任务。

在这个 Outlook 会话中

Private Sub Application_Reminder(ByVal Item As Object)

If Item.Class = olTask Then
    If InStr(Item.Subject, "subject") > 0 Then
        ReminderUnreceivedMail
    End If
End If

End Sub

Sub ReminderUnreceivedMail()

Dim Itms As Items
Dim srchSender As String
Dim srchSubject As String

Set Itms = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items
srchSender = "sender"
srchSubject = "subject"

Set Itms = Itms.Restrict("[SenderName] = 'sender' And [Subject] = 'subject' And [SentOn] > '" & Format(Date, "yyyy-mm-dd") & "'")

If Itms.count = 0 Then
    MsgBox "No " & srchSubject & " email on " & Format(Date, "yyyy-mm-dd")
End If

Set Itms = Nothing

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    相关资源
    最近更新 更多