发送电子邮件的宏

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;