As the email field can sometimes not be used for the correct purpose I use a bit of code to look for an @ symbol and then a dot. If more than one email address is in I replace the comma with -t which is required by dbmailsend.
If using Sage Line 500/1000 the CustomerTable will be scheme.slcustm
I expect the DBForms def below to pickup the customer code already so there is only a lookup to the customers email address.
In [INPUT]
VARIABLE=EMAIL_ADDRESS
VARIABLE=ISQL_CMD , , "<PATHTOOSQL.exe>"
In [EXTRACT]
LET EMAIL_ADDRESS= EXECUTE(((ISQL_CMD + " -h-1 -S <SQLSERVER> -U <USER> -P <PASSWORD> -d <DATABASE> -Q\"set nocount on;select email from <CustomerTable> where customer='") + <CUSTOMERVARIABLE>) + "'")
DEBUG ("Email >" + EMAIL_ADDRESS) + "<"
In [DELIVERY]
LET EMAIL_ADDRESS= TRIM(EMAIL_RESULT)
NOTE Check for valid email address; is there an @?
IF INSTR(EMAIL_ADDRESS,"@",1) = 0 THEN
{
LET EMAIL_ADDRESS=""
DEBUG "Email address invalid"
}
NOTE Check for valid email address; are there spaces?
NOTE Check for valid email address; is there at least one full stop?
IF INSTR(EMAIL_ADDRESS,".",1) = 0 THEN
{
LET EMAIL_ADDRESS=""
DEBUG "Email address invalid2"
}
DEBUG ("Email B >" + EMAIL_ADDRESS) + "<"
NOTE Format EMAIL_ADDRESS Variable if more than one email address entered.
IF INSTR(EMAIL_ADDRESS,",",1) <> 0 THEN
{
LET EMAIL_ADDRESS= REPLACE_STRING(EMAIL_ADDRESS,",","\" -t \"")
DEBUG ("Email C >" + EMAIL_ADDRESS) + "<"
}
In [OUTPUT]
OUTPUT=<EMAILOUTPUTNAME>
INVOCATION="<pathtodbmailsend>"
PARAMETERS=
{
"-f"
QUOTED <EmailAddress>
"-r"
QUOTED <EmailAddress>
"-c"
QUOTED <EmailAddress>
"-s"
QUOTED <EMAILSUBJECT>
"-a"
<ATTACHMENT>
"-t"
QUOTED EMAIL_ADDRESS
OUTPUT_FILE
}