22

I need to send some emails at a specific time of the day and need to do it every day. How can I do it with Outlook?

Delay delivery helps to send mail at a specific of time; but how to create new mail to be sent for tomorrow?

enter image description here

  • 1
    If you don't mind some VBA, this approach might work for you: slipstick.com/developer/send-email-outlook-reminders-fires – kmote Sep 3 '13 at 20:26
  • THank you. I read through the macro but really don't get how to do it. Please guide me and put it into an answer rather than a comment to get accepted. – Nam G VU Sep 4 '13 at 14:12
  • I recommend adding more details to your post: Are the emails identical every day, or is the content automatically generated? Are the destination addresses identical? – kmote Sep 4 '13 at 15:39
  • Dear @kmote, the content and email are indentical every day – Nam G VU Sep 5 '13 at 1:00
28

OK, here is a quick explanation of one way to do this. It requires setting up a macro in the Outlook VBA editor. If you have never done this before, there is a bit of setup that you'll have to trudge through first. (Note that, while creating macros for Outlook is not hard, there are several places where mistakes can happen which can lead to confusion and frustration. If you are a beginner at this and want to continue, I highly recommend carefully reading the entire MSDN page linked to in the first step below.)

1. Open the VBA editor.

On the Outlook ribbon bar, click on the Developer tab (enable it here), and then click Visual Basic. If you don't have a Developer tab on your ribbon bar, you will have to enable it. Refer to the instructions on this MSDN page (scroll down to the section labelled "To enable the Developer tab". NOTE: you should also read the section of that site labelled "To enable macros"). Pressing the Visual Basic button will cause a whole new application to open up (the VBA editor); open ThisOutlookSession, the big pane in the middle is where your macro will go.

To use, press Alt+F11 to open the VBA editor then copy the code and paste it into ThisOutlookSession. (reference)

enter image description here

2. Paste the following macro at the bottom of the macro pane.

'Original function written by Diane Poremsky: http://www.slipstick.com/developer/send-email-outlook-reminders-fires/
Private Sub Application_Reminder(ByVal Item As Object)
  Dim objMsg As MailItem
  Set objMsg = Application.CreateItem(olMailItem)    

If Item.MessageClass <> "IPM.Appointment" Then
  Exit Sub
End If

If Item.Categories <> "Automated Email Sender" Then
  Exit Sub
End If

  objMsg.To = Item.Location
  objMsg.Subject = Item.Subject
  objMsg.Body = Item.Body
  objMsg.Send

  Set objMsg = Nothing
End Sub

3. Create a new Category.

The new created Category (how to) should be called Automated Email Sender (this is an arbitrary title, but if you change it, make sure to change it in the macro too).

4. Create a Calendar appointment.

Place the recipient emails in the "Location" field.

The "Subject" field of the appointment will be used as the Subject field of the email.

The "Body" of the appointment will be the Body of the email.

Set up the appointment to recur on whatever schedule you want. Make sure to set a reminder.

Set up the reminder time

Also, don't forget to assign the Category that you created in the previous step.

Test it out first by putting your own email address in the Location field.

enter image description here


That's it! As long as your macro security settings are set right, this macro will cause an email to be sent automatically whenever a reminder gets triggered on an appointment with the specified Category.

  • 1
    Awesome it works for me ^^ Thank you so much! – Nam G VU Sep 5 '13 at 3:53
  • 2
    @kmote Question, what importance does the reminder have in making this work? I didn't notice it in the code. – SiegeX May 9 '14 at 0:18
  • 1
    @SiegeX: notice the name of the function (Application_Reminder). This is a built-in Outlook event handler that gets called automatically by Outlook whenever a reminder fires. So the Reminder is the trigger that makes this work. – kmote May 9 '14 at 20:45
  • @kmote I see, so if I set the appt time to 2PM and have the reminder set to 30mins before the appt, the email will fire off at 1:30PM instead of 2PM? – SiegeX May 11 '14 at 1:13
  • 1
    This can also be combined with a template, by changing the creation line in the VBA code to objMsg = Application.CreateItemFromTemplate("C:\Users\[USER]\AppData\Roaming\Microsoft\Templates\Test.oft"). – Andy Mercer Jan 8 '15 at 16:51

Not the answer you're looking for? Browse other questions tagged or ask your own question.