Send Outlook Email from Access VBA

Communication between Access Forms and Outlook is a fairly simple task once the initial code is debugged. You can also send multiple messages using the CC function or looping through a record set and sending each email individually.

There are 3 examples of sending emails between Access database and Outlook API on our website:

Below is our main screen for managing email communication with business contacts in our Contact Management Database.

Note that on the form the three fields in the upper right – one for email subject, another for the email body and 3rd field for an email attachment.

email-overview

When the user presses the Produce Output button the following code is activated:

Private Sub Email_Output_Click()

‘ Email API Outlook example programming code
‘ Send email from to Outlook

Select Case Me.Email_Output_Option
Case 1
Dim mess_body As String
Dim rst As DAO.Recordset
Dim appOutLook As Outlook.Application
Dim MailOutLook As Outlook.MailItem
Set rst = Form_F_People_Mailings.RecordsetClone
rst.MoveFirst
Do While Not rst.EOF
If IsNull(rst!Email) Then
MsgBox “skipping ” & _
Form_F_People_Mailings.LastName & _
” no email address.”
GoTo skip_email
End If
mess_body = “Dear ” & rst!Salutation & ” ” & _
rst!LastName & “,” & _
vbCrLf & vbCrLf & Me.Mess_Text
Set appOutLook = CreateObject(“Outlook.Application”)
Set MailOutLook = appOutLook.CreateItem(olMailItem)
With MailOutLook
.To = rst!Email
.Subject = Me.Mess_Subject
.Body = mess_body
If Left(Me.Mail_Attachment_Path, 1) <> “<” Then
.Attachments.Add (Me.Mail_Attachment_Path)
End If
                    ‘next line would let MS Outlook API send the note
‘without storing it in your sent bin
‘.DeleteAfterSubmit = True

.Send
End With
skip_email:
rst.MoveNext
Loop
rst.Close
Set rst = Nothing
Case 2

When the first email gets sent from Access to MS Outlook you’ll get a popup security message asking if you want to send the email message and you can have the connection open for a variable amount of time.  You can download a program; I believe it is called ClickYes that will send the OK button click automatically so you won’t have to do it manually for each email.  See our example on how to read email into Access.

Just released:  Download a working example:

More Access Database Help:

Sending Email to MS Outlook Send Outlook Email from Access Read Email into Microsoft Access Database Email Report Attachment from VBA
Send Gmail Email From Access VBA Email To Gmail Using Access VBA