[AccessD] Using BLAT as an Emailer

Max Wanadoo max.wanadoo at gmail.com
Fri Mar 5 02:57:48 CST 2010


Hi Gustav,

True, but only in that example.

Here is another exampe running with MiniRelay via LocalHost.

TEST.BAT
Del Blat.log
@echo off
:::::::::::::: Lets set some variables ::::::::::::::
set eMail=max at myserver.com
set subj=-s "Test Blat"
set server=-server localhost
set x=-x "X-Header-Test: Can Blat do it? Yes it Can!"
set debug=-debug -log blat.log -timestamp 
::::::::::::::::: Now we run Blat!  :::::::::::::::::
blat %0 -to %eMail% -f %eMail% %subj% %server% %debug% %x%


...and so on. Blat is very powerful and it will take some getting used to,
to handle all the options.

Max


 

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock
Sent: Friday, March 05, 2010 8:46 AM
To: accessd at databaseadvisors.com
Subject: Re: [AccessD] Using BLAT as an Emailer

Hi Max

But you are writing only one command line to that batch file so why a having
the trouble. Just run the command line with Shell.

/gustav


>>> max.wanadoo at gmail.com 05-03-2010 00:59 >>>

Hi Guys,

Here is an example of using BLAT as an Emailer.
Replaces CDO, Redemption, docmd.SendObject, Outlook, ClickYes, etc, etc

FREE. I have used it in 32bit and this example was just used in 64bit so the
program (blat) is pretty stable.
Example is tested in A2k3
Example is tested using a know smtp server with login details. I have not
tried it in gmail. (yest)

Replace smtp login details with your own.

Max


Option Compare Database
Option Explicit
' Example by Max.Wanadoo at gmail.com
' Thanks to Stuart for helping to get the  batch call running correctly.

' NOW:Forget  CDO.
' Forget Redemption
' Forget SendObject
' We have BLAT.
' Free and NO installation - just put a copy in your project folder and
build some text files.


' Download Blat.zip from http://www.blat.net/ ' extract the contents and
place them in your app folder (we only need the blat.exe but the rest will
be worth reading.
' you can then create a FORM where the user can enter variables.  We will
assume some constants,  but these can ' be variables as well.
' You can also store them in tables if  you wish (I would) ' This is just an
exampls so that you understand how it works.
' full details of all the options are in the downloaded text files from
blat.net

' HERE are the contents of the text files used as examples. You can create
these on the fly from within Access.

' Subject.txt = "Hello World"
' Body.txt = This is a test email from Blat.
' Recipients.txt = max.wanadoo at gmail.com, max.wanadoo at gmail.com,
max.wanadoo at gmail.com ' cc.txt = max.wandoo at gmail.com ' bcc.txt =
max.wanadoo at gmail.com ' Signature.txt = Max, Manager ' ps.txt = PS. To
unsubscribe send an email to helpmeplease at heaven.com 


Private sBlatFile, sBlatLog

Sub BlatExample()
'place these varibles in a form  for the user  to enter. We will just create
them 'from here  to show how they fit together to make Blat work.
' What I have done is to put the contents of the various bits into external
text files and call them with these ' variables but you can put them
directly into the varible if you change the calling Blat Switch where
required.
' See Blat file for documentation or drop me a line.  EG, -tf (to file)
becomes -to (address list to send to) ' The files I have used are arbitarily
named and I would antipate generting them from within Access where
appropriate.

    If BlatCreate( _
       sFrom:="me at mydomain.org", _
       sRecipients:="Recipients.txt", _
       sCC:="CC.txt", _
       sBCC:="bcc.txt", _
       sSubject:="subject.txt", _
       sBody:="Body.txt", _
       sSMTPServer:="smtp.mydomain.org", _
       sSMTPUser:="me at mydomain.org", _
       sSMTPPwd:="mysecretsmtppassword", _
       sSignature:="Signature.txt", _
       sPS:="ps.txt", _
       sAttach:="Attach.txt") = 0 Then
        Call sShell(sBlatFile)
    End If
End Sub

Function BlatCreate( _
         sFrom As String, _
         sRecipients As String, _
         sCC As String, _
         sBCC As String, _
         sSubject As String, _
         sBody As String, _
         sSMTPServer As String, _
         sSMTPUser As String, _
         sSMTPPwd As String, _
         sSignature As String, _
         sPS As String, _
         sAttach As String) As Long
    On Error GoTo EH

    Dim sContents As String
    sBlatFile = CurrentProject.Path & "\blat.bat"
    sBlatLog = CurrentProject.Path & "\blat.log"

    sContents = "Blat.exe " & sBody & _
              " -f " & sFrom & _
              " -serverSMTP " & sSMTPServer & _
              " -u " & sSMTPUser & _
              " -pw " & sSMTPPwd & _
              " -tf " & sRecipients & _
              " -cf " & sCC & _
              " -bf " & sBCC & _
              " -sf " & sSubject & _
              " -sig " & sSignature & _
              " -ps " & sPS & _
              " -attach " & sAttach

    ' That is  all the varibles, we will now put our constants in, but
    ' if you want any of these to be changeable then just make them
variables.
    ' NB there are no cr/lf in this file.
    ' this example asks for a read  receipt, etc.
    

    sContents = sContents & " -noh2 -d -r -dsn sfd -priority 1 -log blat.log
-timestamp -ti 60 -try 3 -hostname MyHostName"

    Close 1
    On Error Resume Next
    Kill sBlatFile
    Kill sBlatLog
    On Error GoTo EH
    Open sBlatFile For Output As #1
    Print #1, sContents
    Close 1
EX:
    Close 1
    Exit Function
EH:
    BlatCreate = Err.Number
    Select Case BlatCreate
    Case Else
        MsgBox "Error: " & BlatCreate & vbCrLf & Err.Description
    End Select
    Resume EH
End Function

Private Sub sShell(sFile)
    Dim strCurPath As String, strCurDrive As String, strProjPath As String,
strProjDrive As String
    ' get the project location
    strProjPath = CurrentProject.Path
    strProjDrive = Left(strProjPath, 1):    'Debug.Print strProjDrive,
strProjPath

    ' get the current location
    strCurPath = CurDir
    strCurDrive = Left(strCurPath, 1):    'Debug.Print strCurDrive,
strCurPath

    ' change the current location to the project location
    ' so that we can run the blat.exe via  the blat.bat file
    ChDrive strProjDrive
    ChDir strProjPath

    ' now run the batch file
    Shell sFile

    ' now restore the current location back to what it was.
    ChDrive strCurDrive
    ChDir strCurPath
End Sub

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com




More information about the AccessD mailing list