I emailed you last night: why didn’t you reply?

Rick Cowell, director and founder of ANME Ltd., gives advice on managing out of hours emails

The topic of emailing out of hours is likely to have been debated in a lot of workplaces, especially in schools and colleges. Accessing emails has never been easier and while that is handy most of the time, it also poses a problem – it’s just too easy to open your emails at any time of day, wherever you may be – whether out of curiosity, force of habit, or just boredom. Whose responsibility is it to resolve this issue?

  • Should all staff be instructed not to send any emails after a certain time?
  • Should they be told not to expect it to be read until the next working day?

Who’s at fault?

If people want to check their emails out of work, that’s understandable – provided they don’t feel pressured to do so, but should they send emails too, or reply to others then and there, potentially putting pressure on the recipient to act on them? Or should they save them as a draft to send in the morning?

What can be done?

The option to delay delivery has been a feature of the Microsoft Outlook client for many years and has more recently been introduced to Outlook on Microsoft 365 (previously known as Office 365). However, this relies on the sender setting the delay manually each time they send an email and, if they’re used to sending them quickly, as soon as they’ve finished typing – too easily done by pressing Ctrl and Enter – there’s little chance of them remembering in time…

Can it be done automatically for everyone at work?

No, in a word…Not yet anyway.

There currently aren’t any options for delaying emails sent out of hours on mail servers – or none that I’ve been able to discover so far – so I started looking into ways of customising the Outlook desktop client to handle this for me as I use Outlook on my PC for the vast majority of my emails.

This will involve VBA scripts and I’m the first to admit that I’m certainly no expert when it comes to scripting! After a couple of failed attempts, and near-misses, I posted on the Mr Excel forum (a site I’ve used many times for help with tricky formulae in Excel, but never used the area for ‘Other’ programs before), and was quickly helped by user GWteB there, who completely re-wrote the script for me! What a darned decent guy!

Now I can email away without having to worry about the time, safe in the knowledge that any emails I send after 1800 Monday-Friday, or any time over the weekends, won’t get sent until 0800 the next weekday morning.

Is there anything else I need to know?

There are, of course, a few things to bear in mind…

  1. It only works on emails sent in Outlook that this script has been added to.
  2. It only works on Outlook on Windows, not Macs (there may be a way to add it to Mac, if you try it and get it working, feel free to let me know and I’ll add it here).
  3. Outlook must be running at 0800 (or whatever time you specify in your script). If it’s not running the emails will only get sent when you open Outlook again on that machine – so, if you sent them on your laptop at night, but don’t log back into your laptop until lunchtime at work the following day – the emails won’t send until then.
  4. If you edit the code at any time in the future – eg. to change the times – you will need to re-sign the project (steps 11-20 below).

Having considered those points, I’m wondering whether this is really a practical solution for anyone really, other than the uber-geeky! However, it’s relatively simple to implement – if your account permissions allow it.

It’s a success!

I’ve been using this script for about a month now and, just at the weekends, it’s delayed over 170 emails until Monday morning – so saved those people potentially seeing my emails and acting on them, or just thinking about them. It’s quite alarming seeing the Outbox fill up over the course of the weekend; it makes you realise just how many emails you actually send!

How does the script work?

In a nutshell, it’s a code that needs to be entered in Outlook, and then signed. Nothing is ever quite that straight forward, but it’s not that tricky really! 

The code:

(You can copy and paste this!)

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

Const DELAYDAYSFROM As String = “3.Friday, 2.Saturday, 1.Sunday”

‘If you want to allow specific emails to bypass the delay, you can add the keyword specified below – it’s recommended that you use a nonsense word that isn’t likely to feature in an email normally.

‘The keyword is set as “SendNow” below – change there to use a different word – ensure it is still in the speech marks (you don’t need to include the speech marks in the email)

Const KEYWORD       As String = “SendNow”                           ‘ <<<< change to suit

Dim AddDays As Long, Pos As Long, SendTime As Date

‘Choose below whether you want to bypass the delay with the keyword above in the main body of the email or in the subject.

‘The ‘ (apostrophe symbol) makes the rest of that line get ignored, so make sure it is only at the beginning of the option you don’t want

If InStr(1, Item.Body, KEYWORD, vbTextCompare) Then                 ‘ <<<< choice 1: keyword in body

‘    If InStr(1, Item.Subject, KEYWORD, vbTextCompare) Then              ‘ <<<< choice 2: keyword in subject

‘ send immediately

 AddDays = -1

 Else

‘ assume a delayed send

SendTime = #8:00:00 AM#

 ‘ assume Monday, Tuesday, Wednesday or Thursday

If Time < #7:59:00 AM# Then

AddDays = 0

ElseIf Time > #5:59:00 PM# Then

AddDays = 1

Else

‘ send immediately

AddDays = -1

End If

‘ check on weekend

Pos = InStr(1, DELAYDAYSFROM, VBA.Format$(Date, “dddd”), vbTextCompare)

If Pos > 0 Then

‘ possible delay until Monday

AddDays = CLng(Mid$(DELAYDAYSFROM, Pos – 2, 1))

‘ Friday?

If AddDays = 3 Then

 ‘Friday before 8.00 AM?

If Time < #7:59:00 AM# Then

‘ yep, postpone to 7.00 AM same day

AddDays = 0

‘Friday after 6.00 PM?

ElseIf Time > #5:59:00 PM# Then

‘ yep, postpone to Monday

Else

‘ Friday during office hours, send immediately

 AddDays = -1

End If

End If

End If

End If

If Not AddDays = -1 Then

Item.DeferredDeliveryTime = Date + AddDays + SendTime

End If

End Sub

Just remember – if you edit the code in the future, changing the times etc., you will need to sign the signature again.Is emailing out of hours an issue where you work? Have policies been introduced to minimise it? Let us know by Tweeting mentioning @TheANME

Don’t forget to follow us on Twitter like us on Facebook or connect with us on LinkedIn!

Be the first to comment

Leave a Reply