Codeunit 400 SMTP Mail
OnRun()
CreateMessage(SenderName : Text[100];SenderAddress : Text[50];Recipients : Text[1024];Subject : Text[200];Body : Text[1024];HtmlFormatt
IF Recipients <> ‘’ THEN
CheckValidEmailAddresses(Recipients);
CheckValidEmailAddresses(SenderAddress);
SMTPMailSetup.GET;
SMTPMailSetup.TESTFIELD(“SMTP Server”);
CLEAR(Mail);
IF ISCLEAR(Mail) THEN
CREATE(Mail,TRUE,TRUE);
Mail.FromName := SenderName;
Mail.FromAddress := SenderAddress;
Mail.“To” := Recipients;
Mail.Subject := Subject;
Mail.Body := Body;
Mail.HtmlFormatted := HtmlFormatted;
Send()
WITH SMTPMailSetup DO
Result :=
Mail.Send(
“SMTP Server”,“SMTP Server Port”,Authentication <> Authentication::Anonymous,“User ID”,Password,“Secure Connection”);
Mail.Dispose;
CLEAR(Mail);
IF Result<>’’ THEN
ERROR(Text003,Result);
AddRecipients(Recipients : Text[1024])
CheckValidEmailAddresses(Recipients);
Result := Mail.AddRecipients(Recipients);
IF Result <> ‘’ THEN
ERROR(Text003,Result);
AddCC(Recipients : Text[1024])
CheckValidEmailAddresses(Recipients);
Result := Mail.AddCC(Recipients);
IF Result <> ‘’ THEN
ERROR(Text003,Result);
AddBCC(Recipients : Text[1024])
CheckValidEmailAddresses(Recipients);
Result := Mail.AddBCC(Recipients);
IF Result <> ‘’ THEN
ERROR(Text003,Result);
AppendBody(BodyPart : Text[1024])
Result := Mail.AppendBody(BodyPart);
IF Result <> ‘’ THEN
ERROR(Text003,Result);
AddAttachment(Attachment : Text[260])
IF Attachment = ‘’ THEN
EXIT;
IF NOT EXISTS(Attachment) THEN
ERROR(Text002,Attachment);
Result := Mail.AddAttachments(Attachment);
IF Result <> ‘’ THEN
ERROR(Text003,Result);
CheckValidEmailAddresses(Recipients : Text[1024])
IF Recipients = ‘’ THEN
ERROR(Text001,Recipients);
s := Recipients;
WHILE STRPOS(s,’;’) > 1 DO BEGIN
CheckValidEmailAddress(COPYSTR(s,1,STRPOS(s,’;’) - 1));
s := COPYSTR(s,STRPOS(s,’;’) + 1);
END;
CheckValidEmailAddress(s);
CheckValidEmailAddress(EmailAddress : Text[250])
IF EmailAddress = ‘’ THEN
ERROR(Text001,EmailAddress);
IF (EmailAddress[1] = ‘@’) OR (EmailAddress[STRLEN(EmailAddress)] = ‘@’) THEN
ERROR(Text001,EmailAddress);
FOR i := 1 TO STRLEN(EmailAddress) DO BEGIN
IF EmailAddress[i] = ‘@’ THEN
NoOfAtSigns := NoOfAtSigns + 1;
IF NOT (
((EmailAddress[i] >=‘a’) AND (EmailAddress[i] <=‘z’)) OR
((EmailAddress[i] >=‘A’) AND (EmailAddress[i] <=‘Z’)) OR
((EmailAddress[i] >=‘0’) AND (EmailAddress[i] <=‘9’)) OR
//New Code
((NoOfAtSigns = 0) AND (EmailAddress[i] IN [’!’,’#’,’$’,’%’,’&’,’’’’,
‘*’,’+’,’-’,’/’,’=’,’?’,
‘^’,’’,’`’,’.’,’{’,’|’,
‘}’,’~’])) OR
((NoOfAtSigns > 0) AND (EmailAddress[i] IN [’@’,’.’,’-’,’[’,’]’])))
//Old Code
//(EmailAddress[i] IN [’@’,’.’,’-’,’’]))
THEN
ERROR(Text001,EmailAddress);
END;
IF NoOfAtSigns <> 1 THEN
ERROR(Text001,EmailAddress);