热度 205
笔者在工作中经常要群发一些邮件,有人说这还不简单,可以设置联系人组啊。我们知道邮件群发可以设置联系人组,但我的要求更为复杂,邮件的内容和邮件的附件对不同的联系人是不同的,如果手工设置起来非常麻烦的。曾经用VBA写过一个邮件群发器,但也不是很好用。因为较熟悉SAS,所以用SAS写了一个邮件群发器,可以非常的方便的快速发送邮件。
这里与大家分享一下:
首先,我们知道SAS有通过SMTP发送邮件的功能,SAS HELP文档里说,发送邮件需要SMTP服务器支持。其实,本机并不需要有SMTP服务,利用网易的免费邮箱同样也能实现邮件发送。具体设置如下图假设你使用的使用163免费邮箱(其他邮箱也相同设置,不同的是smtp服务器地址和端口,具体设置可以看相应邮箱的帮助文档)在SAS-工具-选型-系统的通信属下,找到电子邮件选项进行如下设置:
对应的cfg文件(在C:\Program Files\SAS\SAS 9.1\nls\zh)设置如下,把你的邮箱地址和密码替换上去就可以了!
设置好后,在SAS的编程窗口输入如下代码:
filename mymail email "要发送到得email@163.com"
subject="新年快乐" encoding=gb2312
encoding=gb2312;
data _null_;
file mymail;
put '测试邮件:祝您新年快乐!';
run;
把上面设置成您要发到邮件地址,ok测试一下,邮件发送成功!如果发送不成功,也会返回相应的错误提示(错误提示是smtp服务器返回的,而非SAS返回,这里注意,SAS仅接受错误提示)。
到这里基本的设置已经完成了,下面要介绍邮件群发了,我的需求是要实现邮件的群发,且不同的email,使用不同的附件,并且正文的内容不大相当,这里仅举最简单的例子,假设信件开头部分是:“张三”你好,“李四”你好,也就是说你好前面是个变量。
首先,要做个excel表格,存放收件人的email信息表结构如下:
姓名 |
|
附件名称 |
|
|
|
|
|
|
|
|
|
第二步,就要把上面的那段代码改变为宏程序了,把里面的email地址和ATTACH,正文里的姓名变量等信息改变为宏变量。
第三步,就是写一个循环(相当于一个驱动),把excel里表格的信息依次赋值给这个宏就OK了。(这个宏的写法较简单,判断行数,确定循环次数,依次赋值,这里不再啰嗦了)。
写好这个宏后,运行一下,呵呵邮件全部发出去了,再次发送邮件时候,把excel表里的内容变更一下,再run一下,是不是非常方便啊!不仅如此,你的工作如果需要使用SAS生成大量报表,用这个方法可以直接将生成的报表email出去,是不是节省你很多工作量呢?
手机版|会员|至尊|接种|公卫人 ( 沪ICP备06060850号-3 )
GMT+8, 2024-4-20 17:25 , Processed in 0.033797 second(s), 6 queries , Gzip On, MemCached On.
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.