Skip Navigation

Forgetting Attachments in Outlook

How often do you send an email, only to have your world brought crashing down around you in despair when you realise that, despite the fact you said in the email, "I've attached the document", you forgot to actually add the damn thing? If you're anything like me, you do it with startling regularity. There are solutions, though, and I use two:

1. Defer Email Delivery

How to do this varies from client to client, but the principle is the same for each. Email is normally sent straight away, when you click "Send". If you realise you made a mistake once you clicked that button - too late. It's gone. Putting delivery off a couple of minutes doesn't affect your work flow, but it does give your memory a chance to grab your attention and remind you of whatever it is you missed. In Outlook, you can do this with a simple rule:

  • Apply this rule after I send the message
  • defer delivery by 2 minutes

2. Use a Macro

There is a macro for Outlook called Did You Forget Something, Again? that does a wonderful job. It scans emails you send as you send them, and if you have used the word "attach" or "enclose", but there is no attachment, it asks you if you meant to add one. Brilliant.

There are a couple of issues though, and this is why I use a slightly modified version. The main issue is that company signatures, often include a message about virus scanning and attachments - this means that every single one of your emails will be flagged, if you're not careful. Some tweaking to the macro linked above fixes this just fine:

Dim Contents As String Dim ContentsArr() As String

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) If Item.Class <> olMail Then Exit Sub If Item.Attachments.Count > 0 Then Exit Sub Contents = Item.Subject & ":" & Item.Body ContentsArr = Split(Contents, "--" & vbCrLf & "Dave Child") Contents = ContentsArr(0) If Not SearchForAttachWords(Contents) Then Exit Sub Select Case UserWantsToAttach Case vbYes ' Insert and return to editing ExecuteInsertFileCommand Cancel = True Case vbNo ' Just send Case vbCancel ' Return to editing Cancel = True End Select End Sub

The "ContentsArr = Split(Contents, "--" & vbCrLf & "Dave Child")" line is the key - this splits your message before the signature (mine starts with the standard email signature split, "--", and then my name), and only checks the text before that.

Since I started using these two little gems, my forgotten attachment syndrome has nearly been cured. I say nearly, because sometimes I mean to send an attachment but don't actually say "attachment" - but it is still a vast improvement!