Hello, Recently, I encounter one problem on email sending. In my code, if there is no error (&syscc. = 0) the email will be sent with error free message. If &syscc. <= 4, the email will be sent with warning message. Otherwise, the email will be sent with error alert message. This code works well on Unix via SAS EG (also run the code on Unix), and I can receive all these three type of messages under different situation. The log of " %f_notice; " for error alert message by SAS EG is below: 379 %f_notice;
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
4 The SAS System 15:07 Thursday, August 25, 2022
NOTE: The file OUTBOX is:
E-Mail Access Device
Message sent
To: "test@test.com"
Cc:
Bcc:
Subject: Test_Code run status for 202207
Attachments: (
"/sasdata/Test_Code.log" CONTENT_TYPE =
"application/txt" )
NOTE: 2 records were written to the file OUTBOX.
The minimum record length was 66.
The maximum record length was 141.
NOTE: There were 2 observations read from the data set WORK.BODY_FAIL.
NOTE: DATA statement used (Total process time):
real time 0.02 seconds
cpu time 0.00 seconds
NOTE: Fileref OUTBOX has been deassigned.
380 However, when I run it on Unix via "Tectia - SSH Terminal", both "Error free" and "Warning" messages can be sent successfully, but the message with "Error alert" cannot be sent. The log of " %f_notice; " for error alert message by Unix via "Tectia - SSH Terminal" is below: 354 %f_notice;
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds
NOTE: Fileref OUTBOX has been deassigned.
355 The code is included as below. Could anyone please advise on this? Is there any difference on initial options between SAS EG and Unix environment caused this observation? Any suggestion will be appreciated! Thanks, Wayne data body_Success;
length body $500.;
body = "The code of &report_code. is executed successfully without any issue for &YM_ID..
<br /><br />
Please find the details in the attached log."; output;
body = "<br /><br /><i>This is an automated e-mail. Please do not respond."; output;
run;
data body_Fail;
length body $500.;
body = "The code of &report_code. is failed on &YM_ID. execution.
<br /><br />
Please find the details in the attached log."; output;
body = "<br /><br /><i>This is an automated e-mail. Please do not respond."; output;
run;
data body_Warn;
length body $500.;
body = "The code of &report_code. is successfully executed for &YM_ID., but some warning messages are detected.
<br /><br />
Please find the details in the attached log."; output;
body = "<br /><br /><i>This is an automated e-mail. Please do not respond."; output;
run;
/* Email with XLSX attachments */
%macro EMAIL_XLSX (subject=, body=, to=, from=%str(Automated Process <do.not.reply@test.com>), attach1=, attach2=, attach3=, attach4=, attach5=);
data _null_;
call symput("to", tranwrd(trim(left(%trim("&to."))), " ", ",")); /* space delimited - replace all spaces with comma */
run;
data _null_;
length out $1024;
To = %trim("&to.");
do while (index(To,",")>0);
out = trim(out) || ' "' || trim(substr(To, 1, index(To,",")-1)) || '"';
To = strip(substr(To, index(To,",")+1, length(To)-index(To,",")));
end;
out = trim(out) || ' "' || trim(To) || '"';
out = trim(out);
call symput("To", out);
run;
filename outbox email "do.not.reply@test.com";
data _null_;
file outbox
to=(&to.)
from=("&from.")
sender=("&from.")
subject="&subject."
attach=("&attach1." content_type="application/txt")
type='text/html'
;
set &body.;
put Body;
run;
filename outbox clear;
%mend;
%macro f_notice;
%if &syscc. = 0 %then %do;
%EMAIL_XLSX(
subject=%str(&report_code. monthly run status for &YM_ID.),
body=body_Success,
to= &daily_exrtact_recipients.,
attach1=%str(&report_code_folder.&report_code..log)
);
%end;
%else %if &syscc. <= 4 %then %do;
%EMAIL_XLSX(
subject=%str(&report_code. monthly run status for &YM_ID.),
body=body_Warn,
to= &daily_exrtact_recipients.,
attach1=%str(&report_code_folder.&report_code..log)
);
%end;
%else %do;
%EMAIL_XLSX(
subject=%str(&report_code. monthly run status for &YM_ID.),
body=body_Fail,
to= &daily_exrtact_recipients.,
attach1=%str(&report_code_folder.&report_code..log)
);
%end;
%Mend;
... View more