立即注册 登录
公卫人 返回首页

asteriod的个人空间 http://www.epiman.cn/?12177 [收藏] [复制] [RSS]

日志

教你用SAS群发邮件

热度 205已有 3479 次阅读2011-2-17 09:32

    笔者在工作中经常要群发一些邮件,有人说这还不简单,可以设置联系人组啊。我们知道邮件群发可以设置联系人组,但我的要求更为复杂,邮件的内容和邮件的附件对不同的联系人是不同的,如果手工设置起来非常麻烦的。曾经用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

附件名称

 

 

 

 

 

 

 

 

 

   第二步,就要把上面的那段代码改变为宏程序了,把里面的email地址和ATTACH,正文里的姓名变量等信息改变为宏变量。

第三步,就是写一个循环(相当于一个驱动),把excel里表格的信息依次赋值给这个宏就OK了。(这个宏的写法较简单,判断行数,确定循环次数,依次赋值,这里不再啰嗦了)。

    写好这个宏后,运行一下,呵呵邮件全部发出去了,再次发送邮件时候,把excel表里的内容变更一下,再run一下,是不是非常方便啊!不仅如此,你的工作如果需要使用SAS生成大量报表,用这个方法可以直接将生成的报表email出去,是不是节省你很多工作量呢?

 

 


路过

鸡蛋

鲜花
6

握手

雷人

刚表态过的朋友 (6 人)

发表评论 评论 (2 个评论)

回复 kutuomonk 2011-2-17 11:01
回复 iavjssssmqee 2011-2-17 11:51
厉害。

facelist

您需要登录后才可以评论 登录 | 立即注册

手机版|会员|至尊|接种|公卫人 ( 沪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.

返回顶部