【问题标题】:Send an email for each row in a SAS data set为 SAS 数据集中的每一行发送一封电子邮件
【发布时间】:2017-10-12 03:34:56
【问题描述】:

我有一个数据集 (work.employees),其中每个字段都是要发送的电子邮件的一个元素。示例记录:Smith、John、John.Smith@Company.com、JohnsManager@Company.com。对于每条记录,我需要根据那里的信息发送一封单独​​的电子邮件。我可以发送一封带有宏变量的电子邮件,并且处理了一封数据 null 电子邮件,但没有发生迭代。建议将不胜感激。谢谢。

【问题讨论】:

  • 嗨,欢迎来到堆栈溢出。请参阅How to Ask 链接以获取有关如何提出问题并相应更新您的问题的更多详细信息。

标签: macros sas


【解决方案1】:

所以你想通过 sas 发送电子邮件通知?问题是两个折叠的。首先,您需要确保您的 SMTP 服务器在 SAS 中正确配置。其次,您必须制作所需的邮件软件。

请按照http://support.sas.com/kb/19/767.html中的指南进行操作

现在您想要(显然)是解析/选择电子邮件。我将假设您仅从数据集中选择它们。

Proc sql;
     select distinct(emails) into: resplist separated by ' '  from mail_set where emails like '%@%'; 
/*Here I'm selecting only those that have @ mark in the cells. 
You can add parser as you need. (question is a bit oddly worded.*/
quit;

或者,您可以对地址进行硬编码。 (我建议您尝试第一次,这样您就知道您的发送代码有效。

%let respList="Frist.last@email.com" "Second.Recipiant@email.com";


FILENAME Mailbox EMAIL &respList.
Subject="Email delivery for you";
DATA _NULL_;
    FILE Mailbox;
    PUT "Good day,";
    put ;
    PUT "Remain calm. This is a test.";
    PUT ;
run;

您也可以添加 sas 数据集信息,但请记住,通过电子邮件发送垃圾邮件通常是个坏主意。

【讨论】:

    【解决方案2】:

    如果您想为每条记录发送一封电子邮件,最好在数据步骤中使用!EM_ 指令。

    http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002058232.htm

    文件名报告电子邮件“Jim.Smith@work.com”; 数据_null_; 档案报告; 长度名称部门 $ 21; 输入名称部门; 把'!EM_TO! ' 姓名; 把'!EM_SUBJECT! '部门的报告; 把名字','; put '这是'部门'的最新报告。' ; 如果部门='营销'然后 把'!EM_ATTACH! c:\mktrept.txt'; else /* 附加相应的报告 */ 把'!EM_ATTACH! c:\devrept.txt'; 放“!EM_SEND!”; 放“!EM_NEWMSG!”; 放'!EM_ABORT!'; 数据线; 苏珊营销 彼得营销 母校发展 安德烈发展 ; 跑;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-22
      • 2015-05-17
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      相关资源
      最近更新 更多