Automate Email

A

A+P

I'm running Outlook 2003 on Exchange 2003 server.
I would like to schedule an automated email that will be send out to the
same recipients with the same msg everyday from Mon-Fri in the morning. All
I have so far is the following code. How do I tell Outlook to do this
automatically every morning?
Attribute VB_Name = "Module1"

Option Explicit


Sub SendMail()


Dim olApp As Outlook.Application

Dim olMail As Outlook.MailItem

Dim blRunning As Boolean


'get application

blRunning = True

On Error Resume Next

Set olApp = GetObject(, "Outlook.Application")

If olApp Is Nothing Then

Set olApp = New Outlook.Application

blRunning = False

End If

On Error GoTo 0


Set olMail = olApp.CreateItem(olMailItem)

With olMail

'Specify the email subject

..Subject = "Pick up the Mail"

'Specify who it should be sent to

'Repeat this line to add further recipients

..Recipients.Add (e-mail address removed)

..Body = "This is today's pick up mail reminder."

'Choose which of the following 2 lines to have commented out

..Display 'This will display the message for you to check and send yourself

'.Send ' This will send the message straight away

End With


If Not blRunning Then olApp.Quit


Set olApp = Nothing

Set olMail = Nothing


End Sub

Paul
 
A

A+P

Hi Eric,

Thanks for your reply.
I do have a generic code that will send an email on all task reminder event
notifications.
But how do I change it so it traps an event with the subject line: "Pick Up
Mail" ?

Private Sub Application_Reminder(ByVal Item As Object)
Dim objMsg As MailItem
' create new outgoing message
Set objMsg = Application.CreateItem(olMailItem)
' your reminder notification address
objMsg.To = "(e-mail address removed)"
objMsg.CC = "(e-mail address removed)"
objMsg.Subject = "Reminder: " & Item.Subject
' handle task items that generate reminders
Select Case Item.Class
Case olTask '48
objMsg.Body = _
"Start: " & Item.StartDate & vbCrLf & _
"End: " & Item.DueDate & vbCrLf & _
"Details: " & vbCrLf & Item.Body
End Select
' send the message
objMsg.Send
Set objMsg = Nothing
End Sub

Paul
 
A

A+P

Hi Eric,

Ok, how's this?
Dim TaskItem As Item.Class
If TaskItem.Subject = "Pick Up Mail" Then
......
compose email and send...
......
End If
Paul
 
E

Eric Legault [MVP - Outlook]

Close:

Dim objTask As Outlook.TaskItem

If Item.Class = olTask Then
Set objTask = Item
objTask.Subject = "Pick Up Mail" Then
End If

Remember that the passed Item object could be a Contact, Appointment or
MailItem that has a reminder flag on it, thus the check to make sure it is a
Task.

--
Eric Legault (Outlook MVP, MCDBA, MCTS: Messaging & Collaboration)
Try Picture Attachments Wizard for Outlook:
http://www.collaborativeinnovations.ca
Blog: http://blogs.officezealot.com/legault/
 
A

A+P

I see. Let me try this. Thanks.

Paul

Eric Legault said:
Close:

Dim objTask As Outlook.TaskItem

If Item.Class = olTask Then
Set objTask = Item
objTask.Subject = "Pick Up Mail" Then
End If

Remember that the passed Item object could be a Contact, Appointment or
MailItem that has a reminder flag on it, thus the check to make sure it is
a
Task.

--
Eric Legault (Outlook MVP, MCDBA, MCTS: Messaging & Collaboration)
Try Picture Attachments Wizard for Outlook:
http://www.collaborativeinnovations.ca
Blog: http://blogs.officezealot.com/legault/
 
A

A+P

One more question Eric. Is there a way to change the code to also check to
only send the message when the Open button is clicked? I don't want the
email to be sent when the Snooze or Dismiss buttons are clicked on the
Reminder notice.

Paul
 
A

A+P

Hmm...I looked at your link on Inspector Trapper. It's very thoroughly
written. Now all I have to do is understand what you're trying to
say..hahaha.

Paul

Eric Legault said:
Sort of. You can't trap form events for the Reminder window itself. So
you'd need to wire up an Inspector Trapper (see
http://archives.officezealot.com/legault/articles/2224.aspx) and check
during
Inspectors.Add whether this is the same item as the Item object that's
passed
in the Reminder event. Tricky, but possible. Then perhaps you can use
the
Inspector_Open or Inspector_Close event to send the e-mail when the Task
is
opened/closed.

--
Eric Legault (Outlook MVP, MCDBA, MCTS: Messaging & Collaboration)
Try Picture Attachments Wizard for Outlook:
http://www.collaborativeinnovations.ca
Blog: http://blogs.officezealot.com/legault/


A+P said:
One more question Eric. Is there a way to change the code to also check
to
only send the message when the Open button is clicked? I don't want the
email to be sent when the Snooze or Dismiss buttons are clicked on the
Reminder notice.

Paul

Eric Legault said:
Close:

Dim objTask As Outlook.TaskItem

If Item.Class = olTask Then
Set objTask = Item
objTask.Subject = "Pick Up Mail" Then
End If

Remember that the passed Item object could be a Contact, Appointment or
MailItem that has a reminder flag on it, thus the check to make sure it
is
a
Task.

--
Eric Legault (Outlook MVP, MCDBA, MCTS: Messaging & Collaboration)
Try Picture Attachments Wizard for Outlook:
http://www.collaborativeinnovations.ca
Blog: http://blogs.officezealot.com/legault/


:

Hi Eric,

Ok, how's this?
Dim TaskItem As Item.Class
If TaskItem.Subject = "Pick Up Mail" Then
......
compose email and send...
......
End If
Paul

in
message Simple! The Item object passed an argument to the Reminder event
can
be
casted to a TaskItem object where you have full access to all its
properties
(e.g. TaskItem.Subject, etc.). If it equals what you expect, run
your
e-mail
code otherwise exit.

--
Eric Legault (Outlook MVP, MCDBA, MCTS: Messaging & Collaboration)
Try Picture Attachments Wizard for Outlook:
http://www.collaborativeinnovations.ca
Blog: http://blogs.officezealot.com/legault/


:

Hi Eric,

Thanks for your reply.
I do have a generic code that will send an email on all task
reminder
event
notifications.
But how do I change it so it traps an event with the subject line:
"Pick
Up
Mail" ?

Private Sub Application_Reminder(ByVal Item As Object)
Dim objMsg As MailItem
' create new outgoing message
Set objMsg = Application.CreateItem(olMailItem)
' your reminder notification address
objMsg.To = "(e-mail address removed)"
objMsg.CC = "(e-mail address removed)"
objMsg.Subject = "Reminder: " & Item.Subject
' handle task items that generate reminders
Select Case Item.Class
Case olTask '48
objMsg.Body = _
"Start: " & Item.StartDate & vbCrLf & _
"End: " & Item.DueDate & vbCrLf & _
"Details: " & vbCrLf & Item.Body
End Select
' send the message
objMsg.Send
Set objMsg = Nothing
End Sub

Paul
"Eric Legault [MVP - Outlook]" <[email protected]>
wrote
in
message wFor starters, you couldn't automate this from an external .exe
or
script
that starts Oultook and creates an e-mail message, as that's not
supported.

The Outlook Object Model is unsuitable to run in a Windows
service:
http://support.microsoft.com/default.aspx?scid=kb;en-us;237913

A server-side solution is best, but that involves creating an
Exchange
Event
Sink and is very advanced.

The best option is to create a recurring task and write VBA to
trap
the
Reminder event to check that it is your defined task, then run
your
code
to
create and send an e-mail.

--
Eric Legault (Outlook MVP, MCDBA, MCTS: Messaging &
Collaboration)
Try Picture Attachments Wizard for Outlook:
http://www.collaborativeinnovations.ca
Blog: http://blogs.officezealot.com/legault/


:

I'm running Outlook 2003 on Exchange 2003 server.
I would like to schedule an automated email that will be send
out
to
the
same recipients with the same msg everyday from Mon-Fri in the
morning.
All
I have so far is the following code. How do I tell Outlook to
do
this
automatically every morning?
Attribute VB_Name = "Module1"

Option Explicit


Sub SendMail()


Dim olApp As Outlook.Application

Dim olMail As Outlook.MailItem

Dim blRunning As Boolean


'get application

blRunning = True

On Error Resume Next

Set olApp = GetObject(, "Outlook.Application")

If olApp Is Nothing Then

Set olApp = New Outlook.Application

blRunning = False

End If

On Error GoTo 0


Set olMail = olApp.CreateItem(olMailItem)

With olMail

'Specify the email subject

..Subject = "Pick up the Mail"

'Specify who it should be sent to

'Repeat this line to add further recipients

..Recipients.Add (e-mail address removed)

..Body = "This is today's pick up mail reminder."

'Choose which of the following 2 lines to have commented out

..Display 'This will display the message for you to check and
send
yourself

'.Send ' This will send the message straight away

End With


If Not blRunning Then olApp.Quit


Set olApp = Nothing

Set olMail = Nothing


End Sub

Paul
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top