*!* Sample code using SendEmail procedure
DIMENSION aryAttach(1)
LOCAL lcFrom, lcTo, lcSubject, lcBody, lnCount
aryAttach(1) = "C:\autoexec.bat"
lcFrom = "me@mydomain.com"
lcTo = "someone@somedomain.com"
lcSubject = "Hey Have You Tried VFP Email?"
lcBody = "Just wanted to let you know that VFP is pretty versatile and has a lot of ways to send email."
FOR lnCount = 1 TO 5 &&let's do them all, some will work some may not
=SendEmail(lnCount, lcFrom, lcTo, lcSubject, lcBody, @aryAttach)
ENDFOR
PROCEDURE SendEmail(tcType, tcFrom, tcTo, tcSubject, tcBody, tcFiles)
LOCAL llEmailStatus, lcErrorHandlerWas, lcType
lcErrorHandlerWas = ON("ERROR")
lcType = ""
WAIT WINDOW " One Moment... Email is being generated and sent " NOWAIT
DO CASE
CASE tcType = 1
llEmailStatus = SendViaMAPI(tcFrom, tcTo, tcSubject, tcBody)
lcType = "MAPI"
CASE tcType = 2
llEmailStatus = SendViaOutlook(tcFrom, tcTo, tcSubject, tcBody, @tcFiles)
lcType = "OUTLOOK"
CASE tcType = 3
llEmailStatus = SendViaCDOnts(tcFrom, tcTo, tcSubject, tcBody, @tcFiles)
lcType = "CDONTS"
CASE tcType = 4
llEmailStatus = SendViaCDOsys(tcFrom, tcTo, tcSubject, tcBody, @tcFiles)
lcType = "CDOSYS"
CASE tcType = 5
llEmailStatus = SendViaJMail(tcFrom, tcTo, tcSubject, tcBody, @tcFiles)
lcType = "JMAIL"
ENDCASE
IF !EMPTY(lcErrorHandlerWas)
ON ERROR &lcErrorHandlerWas
ELSE
ON ERROR
ENDIF
WAIT CLEAR
IF llEmailStatus
MESSAGEBOX("Your message to " + tcTo + " has been sent.",64,"EMAIL SENT SUCCESSFULLY VIA " + lcType)
ELSE
MESSAGEBOX("Your message to " + tcTo + " was not sent.",64,"EMAIL PROBLEM WITH " + lcType)
ENDIF
ENDPROC
FUNCTION SendViaMAPI(tcFrom, tcTo, tcSubject, tcBody)
ON ERROR RETURN(.F.)
LOCAL loSession, loMessages
loSession = CREATEOBJECT( "MSMAPI.MAPISession" )
loSession.Signon()
IF (loSession.SessionID > 0)
loMessages = CREATEOBJECT( "MSMAPI.MAPIMessages" )
loMessages.SessionID = loSession.SessionID
ENDIF
WITH loMessages
.Compose()
.RecipDisplayName = tcTo
.RecipType = 1
.ResolveName()
.MsgSubject = tcSubject
.MsgNoteText = tcBody
.SEND(.F.)
ENDWITH
loSession.Signoff()
STORE .NULL. to loSession, loMessages
RELEASE loSession, loMessages
RETURN .T.
ENDFUNC
FUNCTION SendViaOutlook(tcFrom, tcTo, tcSubject, tcBody, tcFiles)
ON ERROR RETURN(.F.)
LOCAL oOutlook, oItem, lnCountAttachments
oOutlook = CREATEOBJECT("outlook.application")
oItem = oOutlook.CreateItem(0)
WITH oItem
.Subject = tcSubject
.TO = tcTo
.Body = tcBody
IF PCOUNT() > 4
FOR lnCountAttachments = 1 TO ALEN(tcFiles)
.Attachments.ADD(tcFiles(lnCountAttachments))
ENDFOR
ENDIF
.SEND
ENDWITH
STORE .NULL. to oOutlook, oItem
RELEASE oOutlook, oItem
RETURN .T.
ENDFUNC
FUNCTION SendViaCDOnts(tcFrom, tcTo, tcSubject, tcBody, tcFiles)
ON ERROR RETURN(.F.)
LOCAL oNewMail, lnCountAttachments
oNewMail = CREATEOBJECT("CDONTS.NewMail")
WITH oNewMail
.FROM = tcFrom
.TO = tcTo
.Subject = tcSubject
.Body = tcBody
IF PCOUNT() > 4
FOR lnCountAttachments = 1 TO ALEN(tcFiles)
.AttachFile = tcFiles(lnCountAttachments)
ENDFOR
ENDIF
.SEND
ENDWITH
oNewMail = .NULL.
RELEASE oNewMail
RETURN .T.
ENDFUNC
FUNCTION SendViaCDOsys(tcFrom, tcTo, tcSubject, tcBody, tcFiles)
ON ERROR RETURN(.F.)
Local lcSchema, loConfig, loMsg, loAtt, lnCountAttachments
lcSchema = "[URL unfurl="true"]http://schemas.microsoft.com/cdo/configuration/"[/URL]
loConfig = CREATEOBJECT("CDO.Configuration")
WITH loConfig.FIELDS
.ITEM(lcSchema + "smtpserverport") = 25 && SMTP Port
.ITEM(lcSchema + "sendusing") = 2 && Send it using port
.ITEM(lcSchema + "smtpserver") = "mail.myhost.com" && host of smtp server
.ITEM(lcSchema + "smtpauthenticate") = 1 && Authenticate
.ITEM(lcSchema + "sendusername") = "VaLiDUserNaMe" && Username
.ITEM(lcSchema + "sendpassword") = "PaSsWoRd1234" && Password
.UPDATE
ENDWITH
loMsg = CREATEOBJECT ("CDO.Message")
loMsg.Configuration = loConfig
WITH loMsg
.TO = tcTo
.From = tcFrom
.Subject = tcSubject
.TextBody = tcBody
IF PCOUNT() > 4
FOR lnCountAttachments = 1 TO ALEN(tcFiles)
loAtt=.AddAttachMent(tcFiles(lnCountAttachments))
ENDFOR
ENDIF
.SEND()
ENDWITH
STORE .NULL. to loConfig, loMsg
RELEASE loConfig, loMsg
RETURN .T.
ENDFUNC
FUNCTION SendViaJMail(tcFrom, tcTo, tcSubject, tcBody, tcFiles)
ON ERROR RETURN(.F.)
***Requires FREEWARE w3 JMail Free, v 4.3
***Download at [URL unfurl="true"]http://tech.dimac.net/[/URL]
LOCAL oSMTPMail, lnCountAttachments
oSMTPMail = CREATEOBJECT("jmail.SMTPMail")
*!* oSMTPMail .ServerAddress = "mail.domain.com"
WITH oSMTPMail
.AddRecipient(tcTo)
.Sender = tcFrom
.SenderName = tcFrom
.Subject = tcSubject
.Body = tcBody
IF PCOUNT() > 4
FOR lnCountAttachments = 1 TO ALEN(tcFiles)
.AddAttachMent(tcFiles(lnCountAttachments))
ENDFOR
ENDIF
.Execute()
ENDWITH
oSMTPMail = .NULL.
RELEASE oSMTPMail
RETURN .T.
ENDFUNC