* Send an email FUNCTION SendEmail PARAMETER tcAddress,tcWait,tcFromName,tcSubject,tmTo,tmCc,tmBody,tmToName,tmFile,tmCcName,tmBcc,tmBccName LOCAL lnCompteur,lcEmail LOCAL lcMailServer,lcMailSenderEmail,lcMailSenderName,lcMailRecipient,lcMailCCList,lcMailBCCList LOCAL lcMailSubject,lcMailMessage,lcMailContentType,lcMailAttachment tcAddress=ALLTRIM(tcAddress) tcWait=ALLTRIM(tcWait) tcFromName=ALLTRIM(tcFromName) tcSubject=ALLTRIM(tcSubject) tmTo=ALLTRIM(tmTo) tmToName=IIF(TYPE('tmToName')='C',ALLTRIM(tmToName),'') tmFile=IIF(TYPE('tmFile')='C',ALLTRIM(tmFile),'') tmCc=IIF(TYPE('tmCc')='C',ALLTRIM(tmCc),'') tmCcName=IIF(TYPE('tmCcName')='C',ALLTRIM(tmCcName),'') tmBcc=IIF(TYPE('tmBcc')='C',ALLTRIM(tmBcc),'') tmBccName=IIF(TYPE('tmBccName')='C',ALLTRIM(tmBccName),'') Main.StatutClient.Caption=tcWait * If tmTo is empty IF LEN(ALLTRIM(tmTo))=0 RETURN ENDIF * We can't accept this IF '/'$tmTo RETURN ENDIF Mail=CREATE("wwIPStuff") Mail.cMailServer=gcSmtpHost Mail.cSenderEmail=tcAddress Mail.cSenderName=tcFromName * Insert custom recipient Mail.cRecipient='' FOR lnCompteur=1 TO ParmCnt(tmTo) lcEmail=GetParm(tmTo,lnCompteur) IF NOT ValidEmail(lcEmail) LOOP ENDIF IF glEmailSentWithName lcName=GetParm(tmToName,lnCompteur) IF lcName>0 Mail.cRecipient=Mail.cRecipient+lcName+' <'+lcEmail+'>,' ENDIF ELSE Mail.cRecipient=Mail.cRecipient+lcEmail+',' ENDIF NEXT * If no recipient IF LEN(Mail.cRecipient)=0 RETURN ENDIF Mail.cRecipient=SUBSTR(Mail.cRecipient,1,LEN(Mail.cRecipient)-1) * Cc Mail.cCCList='' IF LEN(ALLTRIM(tmCc))>0 FOR lnCompteur=1 TO ParmCnt(tmCc) lcEmail=GetParm(tmCc,lnCompteur) IF NOT ValidEmail(lcEmail) LOOP ENDIF IF glEmailSentWithName lcName=GetParm(tmCcName,lnCompteur) IF lcName>0 Mail.cCCList=Mail.cCCList+lcName+' <'+lcEmail+'>,' ENDIF ELSE Mail.cCCList=Mail.cCCList+lcEmail+',' ENDIF NEXT Mail.cCCList=SUBSTR(Mail.cCCList,1,LEN(Mail.cCCList)-1) ENDIF * Bcc Mail.cBCCList='' IF LEN(ALLTRIM(tmBcc))>0 FOR lnCompteur=1 TO ParmCnt(tmBcc) lcEmail=GetParm(tmBcc,lnCompteur) IF NOT ValidEmail(lcEmail) LOOP ENDIF IF glEmailSentWithName lcName=GetParm(tmBccName,lnCompteur) IF lcName>0 Mail.cBCCList=Mail.cBCCList+lcName+' <'+lcEmail+'>,' ENDIF ELSE Mail.cBCCList=Mail.cBCCList+lcEmail+',' ENDIF NEXT Mail.cBCCList=SUBSTR(Mail.cBCCList,1,LEN(Mail.cBCCList)-1) ENDIF Mail.cSubject=tcSubject Mail.cMessage=tmBody Mail.cContentType='text/html' * File attachment Mail.cAttachment='' IF LEN(ALLTRIM(tmFile))>0 FOR lnCompteur=1 TO ParmCnt(tmFile) Mail.cAttachment=Mail.cAttachment+UPPER(GetParm(tmFile,lnCompteur))+',' NEXT Mail.cAttachment=SUBSTR(Mail.cAttachment,1,LEN(Mail.cAttachment)-1) ENDIF llResult=Mail.SendMail() lnCompteur=1 DO WHILE NOT llResult Main.StatutClient.Caption=Mail.cErrorMsg+' Retrying: '+ALLTRIM(STR(lnCompteur)) INKEY(30) llResult=Mail.SendMail() lnCompteur=lnCompteur+1 IF lnCompteur=4 lcMailServer=Mail.cMailServer lcMailSenderEmail=Mail.cSenderEmail lcMailSenderName=Mail.cSenderName lcMailRecipient=Mail.cRecipient lcMailCCList=Mail.cCCList lcMailBCCList=Mail.cBCCList lcMailSubject=Mail.cSubject lcMailMessage=Mail.cMessage lcMailContentType=Mail.cContentType lcMailAttachment=Mail.cAttachment ERROR(Mail.cErrorMsg) EXIT ENDIF ENDDOValidEmail() is not included. You may adjust the code to use your own.