The add-in Wizard in Total Access Emailer lets you interactively create the email blasts you want to send from Microsoft Access.
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 instance, a 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.
Total Access Emailer add-in includes a Code Generator that lets you interactively choose to run or preview the email blast, specify other options, and see the corresponding VBA code for the currently selected email blast. Then paste the code into your module to run your email blast.
Code Generator to Send or Preview Email Blasts from Total Access Emailer
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) _ 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.
|lngEmailID||The ID of the email blast to send|
|fRestartBlast||True to restart the email blast if it stopped, or False to start it from the beginning.|
|strDisplayType||Choose whether and how to display the progress of the email blast to the user (form or status bar)|
|strDisplayTitle||The title for the display form and messages to avoid "Total Access Emailer" from appearing.|
|fShowResults||True shows the email blast results in a message box when completed.|
|fShowErrors||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.
|strEmailTbl||The table in the database containing the email blast settings. The default value is "usysTEmailerSettings".|
|strOptionsTbl||The table in the database containing the Send and SMTP options. The default value is "usysTEmailerOptions".|
|strEmbedTbl||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.
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.
A function called TotalAccessEmailer_Preview is similar to the TotalAccessEmailer function described above with the addition of two parameters:
|strEmailAddress||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).|
|lngRecords||Number of records to process|
The 2016 version added the TotalAccessEmailer_PreviewSaveFiles function which supports previewing email blasts with the File Save option. An extra parameter is available to specify the folder to save the file attachments.
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") _ As String
The parameters let you create standard text and HTML emails with attachments, and message status
With the TotalAccessEmailer_SendOne function, you can send emails with more options and control than the built in DoCmd.SendObject method.
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 table.
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.
The TotalAccessEmailer_Email_IsValid 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
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.
To use the Total Access Emailer function, add the Total Access Emailer runtime file as a library reference from your VBA Tools, Reference menu:
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 2010 or later.
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 another location.
For more information, visit Distributing Microsoft Access Databases with Total Access Emailer to Other Users.
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 Microsoft Access.
"I was thrilled with how easy it was to run and I appreciated that I didn't need to build any special tables or queries."
Microsoft Access MVP