Read this for full information on these modules
This deadly simple piece of code will send an email via Outlook.
Original source from Microsoft support site
'modEmail
'v1.09 2013-11-12 10:36
'===========================================================================
' HELP CONTACT
'===========================================================================
' Code is provided without warranty and can be stolen and amended as required.
' Tom Parish
' TJP@tomparish.me.uk
' http://baldywrittencod.blogspot.com
' DGF Help Contact: see BPMHelpContact module
'=========================================================================
'===========================================================================
' modEmail
'===========================================================================
' Routines for sending emails.
'===========================================================================
' Additional modules required:
'===========================================================================
' None
'===========================================================================
' Additional References required:
'===========================================================================
' None
'===========================================================================
' External applications required:
'===========================================================================
' None
'=========================================================================
' VERSION HISTORY
'=========================================================================
' v1.09 bugfix - AttachmentPaths as string <> ""
' upgrade from v1.08 essential
'*************************************************************************
' v1.08 bugfix - dim AttachmentPaths as string
'*************************************************************************
' v1.07 up to 3 attachments
' v1.06 bugfix - multiple To/CC/BCC didn't resolve if separated by ";"
' v1.05 bugfix - multiple To/CC/BCC recipients didn't resolve
'*************************************************************************
' v1.04 bugfix - upgrade advised
' v1.03 bugfix - upgrade essential
'*************************************************************************
' v1.02a annotations only
' v1.02 added cDefaultEmail
' v1.01 late bound references
' v1.00 SendEmail: code adapted from original source
' http://support.microsoft.com/kb/161088
Option Explicit
'default email address for Trigger Failure and if recipient is specified as "" (mainly for testing)
Public Const cDefaultEmail As String = "bpm.gb@dhl.com" 'v1.04
Private Enum olDefaultFolders
olFolderCalendar = 9
olFolderContacts = 10
olFolderDeletedItems = 3
olFolderDrafts = 16
olFolderInbox = 6
olFolderJournal = 11
olFolderJunk = 23
olFolderNotes = 12
olFolderOutbox = 4
olFolderSentMail = 5
olFolderTasks = 13
olPublicFoldersAllPublicFolders = 18
olFolderConflicts = 19
olFolderLocalFailures = 21
olFolderServerFailures = 22
olFolderSyncIssues = 20
End Enum
Private Enum olItemType
olAppointmentItem = 1
olContactItem = 2
olDistributionListItem = 7
olJournalItem = 4
olMailItem = 0
olNoteItem = 5
olPostItem = 6
olTaskItem = 3
End Enum
Function SendEmail(ByVal Email_Recipient As String, Optional ByVal Email_RecipientCC As String _
, Optional ByVal Email_RecipientBCC As String, Optional ByVal Email_Subject As String _
, Optional ByVal Email_BodyText As String, Optional ByVal DisplayMsg As Boolean = False _
, Optional AttachmentPath As String, Optional AttachmentPath2 As String, Optional AttachmentPath3 As String _
) As Byte
'v1.09 2013-11-12 10:36
'results: 0=success, 1=fail
'original source: http://support.microsoft.com/kb/161088
'v1.05 bugfix: http://stackoverflow.com/questions/13019651/automated-email-generation-not-resolving-multiple-recipients
On Error GoTo SendEmailError
Dim objOutlook As Object 'Outlook.Application
'Dim objOutlookMsg 'As Object 'Outlook.MailItem
Dim objOutlookRecip As Object 'Outlook.Recipient
Dim objOutlookAttach As Object 'Outlook.Attachment
'http://stackoverflow.com/questions/13019651/automated-email-generation-not-resolving-multiple-recipients
Dim EmailList As Variant, NumEmails As Long, AddEmailLoop As Long
' Create the Outlook session.
If InStr(Application.Name, "Outlook") = 0 Then
Set objOutlook = CreateObject("Outlook.Application")
Else
Set objOutlook = Application
End If
' Create the message.
'Set objOutlookMsg = objOutlook.CreateItem(0) 'olMailItem
Set objOutlook = objOutlook.CreateItem(0) 'olMailItem
'With objOutlookMsg
With objOutlook
' Add the To recipient(s) to the message.
If Email_Recipient = "" Then
Set objOutlookRecip = .Recipients.Add(cDefaultEmail) 'for testing/blunt force only
Else
'http://stackoverflow.com/questions/13019651/automated-email-generation-not-resolving-multiple-recipients
Email_Recipient = Replace(Email_Recipient, ";", "; ") 'v1.06
EmailList = Split(Email_Recipient, ";")
NumEmails = UBound(EmailList)
For AddEmailLoop = 0 To NumEmails
Set objOutlookRecip = .Recipients.Add(EmailList(AddEmailLoop))
objOutlookRecip.Type = 1 'olTo
objOutlookRecip.Resolve
Next
End If
' Add the CC recipient(s) to the message.
If Email_RecipientCC <> "" Then
Email_RecipientCC = Replace(Email_RecipientCC, ";", "; ") 'v1.06
EmailList = Split(Email_RecipientCC, "; ")
NumEmails = UBound(EmailList)
For AddEmailLoop = 0 To NumEmails
Set objOutlookRecip = .Recipients.Add(EmailList(AddEmailLoop))
objOutlookRecip.Type = 2 'olCC
objOutlookRecip.Resolve
Next
End If
' Add the BCC recipient(s) to the message.
If Email_RecipientBCC <> "" Then
Email_RecipientBCC = Replace(Email_RecipientBCC, ";", "; ") 'v1.06
EmailList = Split(Email_RecipientBCC, "; ")
NumEmails = UBound(EmailList)
For AddEmailLoop = 0 To NumEmails
Set objOutlookRecip = .Recipients.Add(EmailList(AddEmailLoop))
objOutlookRecip.Type = 3 'olBCC
objOutlookRecip.Resolve
Next
End If
' Set the Subject, Body, and Importance of the message.
.Subject = Email_Subject
.Body = Email_BodyText & vbCrLf & vbCrLf
.Importance = 2 'olImportanceHigh 'High importance
' Add attachments to the message.
If AttachmentPath <> "" Then 'v1.09
Set objOutlookAttach = .Attachments.Add(AttachmentPath)
End If
If AttachmentPath2 <> "" Then 'v1.07
Set objOutlookAttach = .Attachments.Add(AttachmentPath2)
End If
If AttachmentPath3 <> "" Then
Set objOutlookAttach = .Attachments.Add(AttachmentPath3)
End If
' Resolve each Recipient's name. 'v1.06 now resolved separately on addition
' For Each objOutlookRecip In .Recipients
' objOutlookRecip.Resolve
' Next
' Should we display the message before sending?
If DisplayMsg Then
.Display
Else
.Save
.Send
End If
End With
Set objOutlook = Nothing
SendEmail = 0 'no error
Exit Function
SendEmailError:
SendEmail = 1 'general failure
End Function
No comments:
Post a Comment