xsharp.eu • Using Outlook from VO
Page 1 of 1

Using Outlook from VO

Posted: Sun Jan 17, 2021 4:43 pm
by Jan@share.be
Hi

Has anyone a good example of how to send an e-mail with Outlook from within a VO application.

Just want to create an email, set the recepient, subject and an attachment.
User has to press the sent button in outlook after verifying.

thanks
Jan

Using Outlook from VO

Posted: Mon Jan 18, 2021 12:10 pm
by ic2
Hello Jan,

It's pretty old code, because as we have our own e-mail program, sending an e-mail to Outlook is no longer necessary in our programs, but this should basically do the trick:

Dick

FUNCTION SendMailOutlook(cSubject,cText,aFiles,aEmail) AS LOGIC

LOCAL cbOldErrorBlock AS CODEBLOCK
LOCAL oOutlook AS USUAL
LOCAL oMail AS USUAL
LOCAL oAttachment AS USUAL
LOCAL nTeller AS DWORD
LOCAL lRetVal AS LOGIC

lRetVal :=TRUE // Init some variables


IF lRetVal .AND. Empty(cSubject) // Check layout
END
IF lRetVal .AND. Empty(cText)
END

IF lRetVal
cbOldErrorBlock:=ErrorBlock() // Save previous error handler
BEGIN SEQUENCE
ErrorBlock({|X|DummyFunction(X)}) // Create new error handler
oOutlook:=OLEAutoObject{"Outlook.Application"} // Start Outlook
oMail:=oOutlook:CreateItem(0) // Create mail
RECOVER // Exception
lRetVal:=FALSE
END
ErrorBlock(cbOldErrorBlock) // Resore old error handler

IF lRetVal // All ok
FOR nTeller:=1 UPTO ALen(aEmail) // For sender objMail:add addresses to email
oMail:Recipients:Add(aEmail[nTeller])
NEXT nTeller

IF oMail:Recipients:ResolveAll() // Check if addresses are ok
oMail:Subject:=cSubject // Add subejct
oMail:Body:=cText // and body
oAttachment:=oMail:Attachments // and attachments:

FOR nTeller:=1 UPTO ALen(aFiles)
IF File(aFiles[nTeller])
oAttachment:Add(aFiles[nTeller])
END
NEXT nTeller
oMail:Send() // send
ELSE
WarningBox{NIL,Vt(MSG_EMAILMESSAGE,"Email message"),;
Vt(MSG_NOTALLEMAILADROK,"Not all email-adresses are correct")}:Show()
lRetVal:=FALSE
ENDIF
ELSE
WarningBox{NIL,Vt(MSG_EMAILMESSAGE,"Email message"),;
Vt(MSG_OUTLOOKNOTOK,"Outlook has not been installed properly!")}:Show()
lRetVal:=FALSE
ENDIF
END
RestoreDefaultPath("")
RETURN lRetVal