22
17
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?
22
17
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?
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)
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.
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.
1This 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 – 2015-01-08T16:51:16.337
What if the computer is locked? – Tom Stickel – 2015-07-09T22:05:55.537
@kmote, this works perfectly if I have less then 5 emails. But when I try to set up a reminder and sending out emails to more than 20+ emails, the 'location box' doesn't seem to have enough space. Any suggestions? – kennyut – 2017-02-23T17:00:36.450
@kennyut, I'm not sure, but you might try using a Distribution List. (However, in that case, you might have to modify the code in the macro to unpack the list.) I don't have Outlook available to me right now, but if you give it a try and play around with it a little (set a breakpoint in the macro), you might be able to get it to work.
– kmote – 2017-02-28T04:00:14.500Having trouble making this work? Check two things that took me far too long to notice: (1)
Script must be placed in ThisOutlookSession, not in Module1 (as clearly documented in the article), and (2)
Check that your emails are not going into your junk folder. – cssyphus – 2018-07-27T15:58:09.683
1Awesome it works for me ^^ Thank you so much! – Nam G VU – 2013-09-05T03:53:39.830
2@kmote Question, what importance does the reminder have in making this work? I didn't notice it in the code. – SiegeX – 2014-05-09T00:18:37.457
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 – 2014-05-09T20:45:07.853
@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 – 2014-05-11T01:13:43.610
@SiegeX, yes that is how it should work. – kmote – 2014-05-11T22:58:36.193
1
If you don't mind some VBA, this approach might work for you: http://www.slipstick.com/developer/send-email-outlook-reminders-fires/
– kmote – 2013-09-03T20:26:02.870THank 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 – 2013-09-04T14:12:45.763
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 – 2013-09-04T15:39:33.727
Dear @kmote, the content and email are indentical every day – Nam G VU – 2013-09-05T01:00:58.467