前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAS-爬取帖子下的邮箱,给他们发一封邮件(续1)...

SAS-爬取帖子下的邮箱,给他们发一封邮件(续1)...

作者头像
Setup
发布2019-10-21 17:33:13
1.1K0
发布2019-10-21 17:33:13
举报
上次我们说到获取了好多个邮箱就结束了(SAS-爬

配置

如果想用SAS发邮件,还是需要在邮箱中配置一下的,比如开启SMTP,这个就需要登录网页版邮箱去开启,其实本来打算用网易邮箱为例,不过最近登录网易邮箱进行设置我一直点不动...所以就以新浪、搜狐、QQ邮箱为例...

SINA

新浪邮箱的配置是很简单的,只需要勾选一下SMTP就可以了...这里有2个,好像是任意选一个就可以了,不过吧,反正都勾上又不花钱所以还是都勾上好....勾上后就可以正常的使用邮箱账号和邮箱密码用第三方发邮件了,这里发邮件的端口是25...

SOHU

搜狐邮箱的SMTP同样和上面一样...其实每个邮箱开启SMTP都是在设置里面...端口同样是25..

QQ邮箱

首先要请原谅的我无知与无能,普通的QQ邮箱SAS好像暂时还是不支持的,因为QQ邮箱现在好像采用了SSL加密,所以不管你是否端口填对了,还是授权码填对了,都是不可行的....(QQ邮箱SMTP的端口是:465),如果是QQ邮箱可以用Python来操作,待会贴上在网上找的Python代码...还是先来看看如何设置

主要大概是前面俩个比较关键吧,本着都开启也就不要钱的原则就都开启吧...其实每个开启的时候都有一个授权码,当然也可以用最下方的生成授权码来生成...这个授权码就是你用其他软件登陆发邮件的密码,QQ邮箱发件的端口是465...好像官方说也可能是587,当然我这里测试得到的是465... 准备好了这些后,就可以用第三方发邮件了,我在网上找到的Python发邮件的代码..

import smtplib  
from email.mime.text import MIMEText
from email.utils import formataddr
my_sender='352055644@qq.com' 
my_user='xiaocgn@163.com'
def mail():
   ret=True
   try:
       msg=MIMEText('填写邮件内容','plain','utf-8')
       msg['From']=formataddr(["发件人邮箱昵称",my_sender])   
       msg['To']=formataddr(["收件人邮箱昵称",my_user])  
       msg['Subject']="主题"
       server=smtplib.SMTP_SSL("smtp.qq.com",465)  
       server.login(my_sender,"此处填写授权码")    
       server.sendmail(my_sender,[my_user,],msg.as_string())  
       server.quit()   
   except Exception:   
       ret=False
   return ret
ret=mail()
if ret:
   print("ok")
else:
   print("filed")

总结一下,SMTP的开启也是很简单的。那么用程序语言来实现发邮件的功能,如果遇到ERROR,常见的问题大概就是如下的几类了:1.SMTP未开启、2.端口未填写正确、3.邮件内容被认为是垃圾或携带病毒、4.你程序写的有问题了...

程序编写

还是回到正文上面来,在SAS发邮件的程序到底该怎么写,当然程序实现的方式有很多种,仅以我这次的为例,先来看看我这次用SAS发的邮件张的啥样子...

见上图,为邮件的正文及附件,那么如何来实现这些功能(附加,正文列表等)呢,接下来就与我一步一步的来看看我这个程序的代码怎么写的....还是简单大体的说一下原理:option设置发件端口邮箱账号密码等,接下里用filename设置收件人、抄送人、添加附加等等,利用ods、proc report等来输出html作为邮件正文...

第一步:option选项的配置

options emailsys=smtp;
options emailauthprotocol=PLAIN;
options emailhost="smtp.sina.com";/*SMTP,中间填写对应厂商*/
options emailport=25;/*端口*/
options emailackwait=30;
options emailid="xiaocgn@sina.com";/*发件箱*/
options emailpw="邮箱的密码";

第二步:filename设置邮件主题、收件人等等

filename temp email to = ( "xiaocgn@sohu.com" ) cc = ("cashes@126.com" ) 
subject="填写邮件主题"  type="text/html"    attach=("D:\日常练习\sas_gteml\new\doc\二维码.jpg");

第三步:制作邮件中资料列表的数据集....(连接都是真实可靠的资料...)

data temp1;
length name url $200.;
input name $ ;
input url $ ;
cards;
SAS各版本安装包及下载资源
http://pan.baidu.com/s/1kV5mU6F
SAS安装教程
http://mp.weixin.qq.com/s/_8SkZfL_mDaWfJMsSRBP5Q
SAS最新SID及更新方法
http://mp.weixin.qq.com/s/582kFr9x9GtTpUjtjqkwpg
SAS基础相关书籍
https://pan.baidu.com/s/1eUaWTBs
SAS统计类书籍及视频及考证资料题库
https://pan.baidu.com/s/1raduvKw
;
run;

第四步:既然要用到Ods输出,为了字体样式好看一点,就稍微用proc template写一下邮件的样式...也就想改变一下边框,所以随便找了一个系统自带style,修改了一下边框...

proc template;
define style style_tb1;
parent = styles.rtf;
replace table from output / 
frame = void
rules = all
cellspacing = 0pt
cellpadding = 0pt;
end;
run;

第五步:ods text与proc report书写正文、制作样式....(注意:下面的第一句body=temp,这里temp是filename哪儿定义的,所以执行这部分就是在发邮件)

ods html body=temp  style =style_tb1;
title ;
ods html text = "Hi,您好!";
ods html text = "首先请允许我做一个简单的自我介绍,我是微信公众号:SAS程序分享号号号(公众号的微信号:xiaocgn)的小编,
同时值此新春佳节之际,我在这里给您拜年了!";
ods html text = "诚邀各位前辈关注小编的公众号,为了推广,小编已经无所不用其极了,如有打扰,真诚的在此给您道歉~
同时,作为一个SAS编程的晚辈,也欢迎各位前辈关注、指点以及交流...";
ods html text = "在这里,我为您准备了很多迟到的SAS资源....";
proc report data=temp1 nowd headline headskip
style(report)={just=left asis=on }
style(header)={just=left asis=on }
style (column) = {background =   #E0FFFF CELLHEIGHT = 2.5% font_face = "Times New Roman" font_size = 7pt just=left};
columns ("资料列表" name url) ;
define name /display ' ' ;
define url / display ' ' ;
run;
ods html text = "Br";
ods html text = "xiaocgn";
ods _all_ close;

单个群发

用程序来发邮件,是为了实现一个群发功能,上面的代码只是发一个人,虽然说可以filename 中的to=(“收件邮箱1" “收件邮箱2” “收件邮箱3”...),但是邮箱对单封邮件最多发送的人都是有限制的,而且同一封邮件如果多个收件人的话,那么很容易造成进入别人垃圾箱...所以在这里就并没有用单封多个收件的人的手段,而且一封邮件一个人收件人...那么也是仅仅写一个循环就可以的...

%macro sas_send(mail=);
filename temp email to = (" &mail.")  subject="....."  type="text/html"    attach=("D:\日常练习\sas_gteml\new\doc\二维码.jpg");
ods html body=temp  style =style_tb1;
title ;
ods html text = "Hi,您好!";
ods html text = "首先请允许我做一个简单的自我介绍,我是微信公众号:SAS程序分享号号号(公众号的微信号:xiaocgn)的小编,同时值此新春佳节之际,我在这里给您拜年了!";
ods html text = "诚邀各位前辈关注小编的公众号,为了推广,小编已经无所不用其极了,如有打扰,真诚的在此给您道歉~
同时,作为一个SAS编程的晚辈,也欢迎各位前辈关注、指点以及交流...";
ods html text = "在这里,我为您准备了很多迟到的SAS资源....";
proc report data=temp1 nowd headline headskip
style(report)={just=left asis=on }
style(header)={just=left asis=on }
style (column) = {background =   #E0FFFF CELLHEIGHT = 2.5% font_face = "Times New Roman" font_size = 7pt just=left};
;
columns ("资料列表" name url) ;
define name /display ' ' ;
define url / display ' ' ;
run;
ods html text = "Br";
ods html text = "xiaocgn";
ods _all_ close;
%mend;

data _null_;
 set eml_ds;
 call execute('%sas_send(mail='||strip(final)||strip(')'));
run;

前面的配置就不在这里放到Macro中包裹起来(也可以包裹起来), 然后通过call execute来实现循环执行宏的操作,set eml_ds;是包含邮箱的数据,final是一个变量(下面的每一条观测是一个邮箱)...这样就可以实现群发功能了,如果有更高的需求,比如说弄多个发件箱,实现自动交替发件,都可以基于本文代码进行一些简单的修改就可以实现了....

把最终的效果在贴一次,作为本文的结尾!发邮件的代码基本上说完了,本文作为(续1),那么会不会有(续2)呢....这个有想法,但大概近期不会有,同时,要向那些收到我垃圾邮件的朋友在这里再说一次抱歉

因为在未来你还可能会在次收到我的垃圾邮件....因为这次吸收关注效果不怎么样,大概也就吸收了50多个关注,由于我是一个急性子,自动发的邮件没几个,几乎全是手动群发的(有阅读回执),收到的阅读回执不多,所以应该大部分进了垃圾箱,所以我还要发...

或许大概再过半年等网上积攒一波新的邮箱,在一起发一次......

今天就这么多了,后续内容,敬请期待~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAS程序分享号号号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档