Gustav Brock
Gustav at cactus.dk
Fri Mar 5 02:46:06 CST 2010
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