Sending Microsoft Access Email Blasts Programmatically (VBA)
The add-in Wizard in Total Access Emailer lets you
interactively create the email blasts you want to send from
In the Professional Version, Total Access Emailer
offers a VBA programmatic interface that lets you run these
email blasts from your MS Access code. This can be tied to an event (for
button click), a macro via the RunCode action, or within
your other VBA processes.
The nice thing is the complexity of creating, specifying
all the options, and
testing/previewing the email blast can be done
interactively through the add-in, and you simply launch it
in your code.
Sending an Email Blast from Microsoft
By adding Total Access Emailer's royalty-free runtime distribution file
as a library reference to your project, you can invoke its procedure. Any email blast created by the add-in can be added to your
application with a simple function call. Each email blast is
given a number. In this example, email blast #25 is sent:
strError = TotalAccessEmailer(25, False, "", "", True, True)
That's all you need to add the sophisticated email
features of Total Access Emailer into your applications. The
user interface can be completely hidden so your users don't
even realize Total Access Emailer is running in the
background. You control your user's experience.
Public Function TotalAccessEmailer( _
lngEmailID As Long, _
fRestartBlast As Boolean, _
strDisplayType As String, _
strDisplayTitle As String, _
fShowResults As Boolean, _
fShowErrors As Boolean, _
Optional strEmailTbl As String, _
Optional strOptionsTbl As String, _
Optional strEmbedTbl As String) _
These parameters are
available to customize how your email blast is sent. You can choose to have
Total Access Emailer display its progress screens with your
title, or hide it completely from your user.
||The ID of the email blast to send
||True to restart the email blast if it stopped,
or False to start it from the beginning.
||Choose whether and how to display the progress
of the email blast to the user (form or status bar)
||The title for the display form and messages to
avoid "Total Access Emailer" from appearing.
||True shows the email blast results in a message
box when completed.
||True displays the errors table if errors are
encountered. False still generates the errors table,
but does not display it.
By default, the function uses the email blasts stored in
the three tables used by the add-in. When you add email
blasts to your application, you may not want users to be
able to edit them with their add-in. By renaming these
tables, you can ensure they are not modified. Simply pass
the names of your tables as the optional parameters and the
function looks there for the email blast specifications.
||The table in the database containing the email
blast settings. The default value is "usysTEmailerSettings".
||The table in the database containing the Send
and SMTP options. The default value is "usysTEmailerOptions".
||The table in the database containing the
Embedded Object information. The default value is "usysTEmailerEmbedded".
The function returns a blank string if it's successful or an error string
if there's a problem. You can choose to display that to the user or hide it
and process it yourself.
Previewing an Email Blast
Similar to the TotalAccessEmailer function, you
can preview an email blast by sending the email to an email
address you specify rather than the recipient in your data
source. This lets you or your users verify the emails are
correct before actually sending them. This is similar to the
Preview feature in the add-in.
Email Preview Function
A function called TotalAccessEmailer_Preview is similar
to the TotalAccessEmailer function described above with the
addition of two parameters:
||The email address to send the
emails. This override the TO email address of the emails you are
sending. (Any Cc and Bcc addresses are ignored during preview).
||Number of records to process
Sending One Email
Total Access Emailer offers a
function to let you send a single email without creating
a pre-defined email blast. It lets you send an email
directly from your VBA code while using the SMTP server
settings you've already specified in Total Access Emailer.
It doesn't have all the features of an email blast such as
attaching filtered reports, but it does support the basics
of sending a text or HTML email.
Public Function TotalAccessEmailer_SendOne( _
strFrom As String, _
strTO As String, _
strCC As String, _
strBCC As String, _
strSubject As String, _
strMessageText As String, _
strMessageHTML As String, _
Optional strHTMLFile As String, _
Optional strAttachments As String = "", _
Optional intPriority As Integer = 3, _
Optional intSensitivity As Integer = 0, _
Optional fReadReceipt As Boolean = False, _
Optional strOptionsTbl As String = "usysTEmailerOptions") _
The parameters let you create standard text and HTML
emails with attachments, and message status
- Email addresses for From, To, Cc, Bcc
- Text message
- HTML message or HTML message from a saved HTML file.
If the HTML file references graphics in its own folder,
those graphic files will be automatically included in
- Files on disk to attach
- Message priority, sensitivity, read receipt
With the TotalAccessEmailer_SendOne function, you can
send emails with more options and control than the built in
Setting SMTP Logon and
All the SMTP settings are saved in the usysTEmailerOptions
table (or a table you specify) in your database. This can be
easily changed by the Total Access Emailer add-in under
Options. There are two password values for the logon and
firewall which are encrypted. You can't simply edit the
When you deploy your application with Total Access
Emailer to others, they will probably not have the add-in or
the ability to run it against your application. They may
also not want to tell you their passwords. Total Access
Emailer provides a simple TotalAccessEmailer_SetPasswords
function to overwrite the passwords saved in the table.
function tests a string to see if itís a valid
email address with syntax like name@domain. For
instance, it makes sure there are no spaces, an
@ sign exists, text before and after the @, text
after the @ has a period, etc.
Public Function TotalAccessEmailer_Email_IsValid(strEmail As String) As Boolean
Parameters and Return Value
Just pass the email address and the function
returns True or False depending on whether it
has standard email syntax. The function does not
validate that it's an actual email address with
a real recipient.
The TotalAccessEmailer_SMTP_IsValid function validates
the saved SMTP settings without sending an email blast. The
function returns an empty string if everything is okay, or
an error string describing the problem. This is useful to
check before launching an email blast or in conjunction with
user input of their SMTP settings.
VBA Code Generator
The Code Generator from the Total Access Emailer add-in lets you
interactively select options and build the VBA
code to run the currently selected email blast
in your application. You can choose to run or preview the email blast. Simply set your options and
paste the code into your module to send and/or preview your email blast.
Adding the Total Access Emailer Library
Reference to Email from Microsoft Access Modules
To use the Total Access Emailer function, add the Total
Access Emailer runtime file as a library reference from your VBA Tools, Reference
The Total Access Emailer runtime library is TAEmailR.accde or
TAEmailR.mde depending on whether your database is ACCDE or MDB/ADP
format. There is also a 64-bit runtime library, TAEmail_64.accde, for the
64-bit versions of Microsoft Access 2013 and 2010.
Runtime Files on Another User's Machine
If your database that includes the Total Access
Emailer reference is run by other users, you'll
need to deploy it properly. This depends on
whether it's deployed across your network or to
For more information, visit
Microsoft Access Databases with Total Access
Emailer to Other Users.
Table Driven Email Systems
With the programmatic interface, you can easily add table driven emailing
systems within your Microsoft Access applications. More details in
Creating a Continuous Email Service in
Main Microsoft Access Email Page