检查是否已设置延迟发货

问题描述 投票:0回答:1

例如,此处此处此处此处介绍了如何通过 VBA 延迟电子邮件发送。

我在

Application_ItemSend
中实现了一个版本。如果电子邮件在一天中的某个时间之前发送,它始终会应用延迟递送。

如何检查延迟交付是否已已设置在这种情况下我可能会选择不更改它。

我在添加延迟交付的代码之前和之后打印了

Item.DeferredDeliveryTime

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    Debug.Print "Item.DeferredDeliveryTime: " & Item.DeferredDeliveryTime

    ' My code to delay delivery is here. 
    
    Debug.Print "Item.DeferredDeliveryTime: " & Item.DeferredDeliveryTime
    
End Sub

在新电子邮件中,因此一开始就没有设置延迟递送,我得到以下信息:

Item.DeferredDeliveryTime:4501-01-01
项目.延期交货时间: 2023-07-20 6:31:00 AM

我的代码已确定需要延迟交付,并在今天上午 6:31 应用了延迟交付。
在此之前,

Item.DeferredDeliveryTime
被设置为这个奇怪的数字4501-01-01,看起来像是一个没有时间的日期。

该初始数字是日期格式的 Outlook 代码,表示“未设置延迟送达”还是该日期设置得很远,因此 Outlook 会忽略它?

无论哪种情况,这个数字都是恒定的吗? IE。当未设置延迟发送时,所有系统上的所有电子邮件是否始终显示相同的号码?这意味着我可以根据该常量检查该值还是可变的,需要进行一些解析来确定它是否是“非常遥远”的日期,在这种情况下,我们假设未设置延迟交付?

有没有更好的方法来判断是否已经设置了延迟发货?

vba email outlook
1个回答
1
投票

由于

DateTime
不可为空(在 COM 中它是一个 8 字节浮点数),指定“无值”的唯一方法是使用一个特殊值,即
1/1/4501
。 Outlook 始终使用该值作为其未设置的 DateTime 属性。

© www.soinside.com 2019 - 2024. All rights reserved.