If you need to prevent yourself from sending specific emails outside working hours, you can utilize the method shown in this article. It can let Outlook auto check if it’s in working hours when you send specific emails and delay it until working hours.
At times, the time when you compose and send a mail isn’t within your working hours. In this case, you may wish to delay sending this email until the subsequent working hours. Generally, you can use the native feature “Delay Delivery” to delay such emails. However, by that means, you ought to specify the delivery time every time. It is too troublesome. Thereinafter, we will share you a piece of VBA code, which can auto check if it is within working hours when you send a specific email and rapidly delay sending it until the working hours.

Quickly Delay Sending Specific Emails until Working Hours
- At the very outset, launch your Outlook program.
- Then in the emerging Outlook main screen, you could press “Alt + F11” keys.
- Next you will get access to Outlook VBA editor in success.
- After that, you need to locate and open the “ThisOutlookSession” project.
- Subsequently, copy the following VBA code into this project window.
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim objMail As MailItem
Dim NewSendTime As String
Dim bDelayMail As Boolean
Dim nPrompt As Integer
bDelayMail = True
If TypeOf Item Is MailItem Then
Set objMail = Item
'Work on specific emails only
'You can change the conditions as per your needs
If objMail.Recipients.Item(1).Address = "boss@datanumen.com" Then
Select Case Weekday(Date, vbMonday)
'Delay 2 days if today is Saturday
Case 6
NewSendTime = (Date + 2) & " 09:00:00"
'Delay 1 days if today is Saturday
Case 7
NewSendTime = (Date + 1) & " 09:00:00"
Case Else
If DatePart("h", Now) < 9 Then
'Delay to 9 o'clock if now is too early
NewSendTime = Date & " 09:00:00"
ElseIf DatePart("h", Now) > 18 Then
Select Case Weekday(Date, vbMonday)
'Delay 3 days if today is Friday and now is over 6 PM
Case 5
NewSendTime = (Date + 3) & " 09:00:00"
'Delay to 9 o'clock if now is before 6 PM
Case Else
NewSendTime = (Date + 1) & " 09:00:00"
End Select
Else
bDelayMail = False
End If
End Select
If bDelayMail = True And objMail.DeferredDeliveryTime = "1/1/4501" Then
'Ask if to delay sending this email
nPrompt = MsgBox("Outside Working Hours:" & vbCrLf & "Do you want to delay this email until " & NewSendTime & "?", vbYesNo + vbExclamation, "Delay Email")
If nPrompt = vbYes Then
objMail.DeferredDeliveryTime = NewSendTime
Else
objMail.DeferredDeliveryTime = "1/1/4501"
End If
End If
End If
End If
End Sub
- Later you will be required to assign a digital certificate to this email.
- And then change your Outlook macro settings to permit the signed macros.
- From now on, every time you send emails which meet the predefined criteria, if it is outside working hours, you will get a prompt like the following image:
- If you select “Yes”, Outlook will schedule it to be sent out until working hours.
Rescue Damaged Outlook Files
Outlook has earned a lot of kudos due to its myriad features. However, it still has a deadly flaw. That is Outlook is prone to errors and corruption. Hence, you ought to back up your Outlook files on a regular basis. It can prevent you from suffering painful Outlook data loss. In addition, you had better get hold of a mighty repair tool, such as DataNumen Outlook Repair, which can repair Outlook issues within seconds.
Author Introduction:
Shirley Zhang is a data recovery expert in DataNumen, Inc., which is the world leader in data recovery technologies, including mdf recovery and outlook repair software products. For more information visit www.datanumen.com

