发送电子邮件的宏
A macro to send a email
我的代码使用 sas 数据步骤发送邮件。在这里尝试创建一个代码来发送邮件。
FILENAME outbox EMAIL ("***********");
DATA _NULL_;
FILE outbox
TO=("************")
FROM=("***********")
SUBJECT=("Example of a SAS E-mail" );
/* ATTACH=(""); */
PUT " ";
PUT "Hello Boss,";
PUT " ";
PUT "Attached are the Daily Operational Reports.";
PUT " ";
PUT "rrt";
RUN;
我不倾向于在数据步骤本身中包含电子邮件参数,而是在文件引用中。我已经用我的电子邮件地址测试了下面的代码并且它有效。
正如我在评论中所说,如果您希望它 运行 在宏中,您只需将数据步包装在宏中。
您可以有位置或关键字参数。有关详细信息,请参阅此 source。我在这个例子中使用了关键字参数。您通过指定关键字然后指定值来调用宏,就像我在最后一行显示的那样。如果您不放置任何内容,则该关键字将被忽略。
顺便说一下,空关键字会导致初始化局部宏变量。让像 (%LET FROM=FROM="&FROM") 这样的语句在那里添加一个字符串 "FROM=" 到 "FROM" 宏变量的开头,这样文件名语法就完整了。如果 "FROM" 之类的宏变量按原样传递,它将解析为文件名不知道如何处理的电子邮件地址。
%MACRO send_email (TO=,FROM=,SUBJECT=,ATTACHMENT=,BODY=);
%IF &TO ne %THEN
%LET TO="&TO";
%IF &FROM ne %THEN
%LET FROM=FROM="&FROM";
%IF &SUBJECT ne %THEN
%LET SUBJECT=SUBJECT="&SUBJECT";
%IF &ATTACHMENT ne %THEN
%LET ATTACHMENT=ATTACHMENT="&ATTACHMENT";
%IF &BODY ne %THEN
%LET BODY="&BODY";
FILENAME outbox EMAIL &TO &FROM &SUBJECT &ATTACHMENT;
DATA _NULL_;
FILE outbox;
PUT &BODY;
RUN;
%MEND;
%send_email(email=example@example.com);
Peeyush,
试试下面的代码示例。确保输入您的 SMTP 电子邮件主机详细信息以及往来电子邮件地址。如果你想要额外的自动化,你可以使电子邮件地址成为宏变量:
%macro emailM;
OPTIONS emailsys = SMTP emailhost = Youremail.Host.net emailport= 25;
FILENAME Mailbox EMAIL 'You@something.com';
attach=("\somewhere\something\File.xls");
DATA _NULL_;
FILE MailBox TO=("somebody@something.com" "somebody2@something.com")
Subject="Example of a SAS E-mail";
PUT "Hello Boss,";
PUT " ";
PUT "Attached are the Daily Operational Reports.";
PUT " ";
PUT "Thank you";
RUN;
%mend emailM;
%emailM;
我的代码使用 sas 数据步骤发送邮件。在这里尝试创建一个代码来发送邮件。
FILENAME outbox EMAIL ("***********");
DATA _NULL_;
FILE outbox
TO=("************")
FROM=("***********")
SUBJECT=("Example of a SAS E-mail" );
/* ATTACH=(""); */
PUT " ";
PUT "Hello Boss,";
PUT " ";
PUT "Attached are the Daily Operational Reports.";
PUT " ";
PUT "rrt";
RUN;
我不倾向于在数据步骤本身中包含电子邮件参数,而是在文件引用中。我已经用我的电子邮件地址测试了下面的代码并且它有效。
正如我在评论中所说,如果您希望它 运行 在宏中,您只需将数据步包装在宏中。
您可以有位置或关键字参数。有关详细信息,请参阅此 source。我在这个例子中使用了关键字参数。您通过指定关键字然后指定值来调用宏,就像我在最后一行显示的那样。如果您不放置任何内容,则该关键字将被忽略。
顺便说一下,空关键字会导致初始化局部宏变量。让像 (%LET FROM=FROM="&FROM") 这样的语句在那里添加一个字符串 "FROM=" 到 "FROM" 宏变量的开头,这样文件名语法就完整了。如果 "FROM" 之类的宏变量按原样传递,它将解析为文件名不知道如何处理的电子邮件地址。
%MACRO send_email (TO=,FROM=,SUBJECT=,ATTACHMENT=,BODY=);
%IF &TO ne %THEN
%LET TO="&TO";
%IF &FROM ne %THEN
%LET FROM=FROM="&FROM";
%IF &SUBJECT ne %THEN
%LET SUBJECT=SUBJECT="&SUBJECT";
%IF &ATTACHMENT ne %THEN
%LET ATTACHMENT=ATTACHMENT="&ATTACHMENT";
%IF &BODY ne %THEN
%LET BODY="&BODY";
FILENAME outbox EMAIL &TO &FROM &SUBJECT &ATTACHMENT;
DATA _NULL_;
FILE outbox;
PUT &BODY;
RUN;
%MEND;
%send_email(email=example@example.com);
Peeyush,
试试下面的代码示例。确保输入您的 SMTP 电子邮件主机详细信息以及往来电子邮件地址。如果你想要额外的自动化,你可以使电子邮件地址成为宏变量:
%macro emailM;
OPTIONS emailsys = SMTP emailhost = Youremail.Host.net emailport= 25;
FILENAME Mailbox EMAIL 'You@something.com';
attach=("\somewhere\something\File.xls");
DATA _NULL_;
FILE MailBox TO=("somebody@something.com" "somebody2@something.com")
Subject="Example of a SAS E-mail";
PUT "Hello Boss,";
PUT " ";
PUT "Attached are the Daily Operational Reports.";
PUT " ";
PUT "Thank you";
RUN;
%mend emailM;
%emailM;