专栏首页SAS程序分享号号号SAS-爬取帖子下的邮箱,给他们发一封邮件(续1)...

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

上次我们说到获取了好多个邮箱就结束了(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多个关注,由于我是一个急性子,自动发的邮件没几个,几乎全是手动群发的(有阅读回执),收到的阅读回执不多,所以应该大部分进了垃圾箱,所以我还要发...

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

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

本文分享自微信公众号 - SAS程序分享号号号(xiaocgn)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-02-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 小程序10行代码实现微信头像挂红旗,国庆节个性化微信头像

    至于如何创建小程序,我这里就不在细讲了,我也有写过创建小程序的文章,也有路过相关的学习视频,去翻下我历史文章找找就行。

    编程小石头
  • 用可视化地图讲照片的故事(Python+Leaflet)

    手机和数码相机拍的照片里除了我们能看到的RGB像元数据,还包含了拍摄时间、图像分辨率、感光值、GPS坐标等属性,记录在Exif(Exchangeable ima...

    数据森麟
  • 想要上手机器翻译?飞桨教你用Transformer 一战到底

    导读:机器翻译,能够实现多种语言之间的自动翻译,方便人类的沟通和交流,具有重要的研究和应用价值。Transformer是机器翻译领域的一个经典模型,一经问世,便...

    用户1386409
  • Django-中间件-csrf扩展请求伪造拦截中间件-Django Auth模块使用-效仿 django 中间件配置实现功能插拔式效果-09

    django 中间件 就类似于是 django 的门户,请求来的时候需要先经过 中间件 才能到达 django 后端(urls),响应走的时候也需要经过 中间件...

    suwanbin
  • 还在手工写接口自动化用例?这种方式可以试试!

    测试技术发展到今天,如果你还不会一些自动化技能,不会接口自动化方法,不会写一个两个框架,出去都不好意思跟人打招呼!

    上帝De助手
  • 掌握这几点,轻松玩转 Bokeh 可视化 (项目实战经验分享)

    本文通过一个项目案例,详细的介绍了如何从 Bokeh 基础到构建 Bokeh 交互式应用程序的过程,内容循序渐进且具有很高的实用性。本文共有两万字左右,属于纯干...

    数据森麟
  • 几张Python学习思维导图,概括Python所有基础知识!

    1、按顺序依次展示了以下内容的一系列思维导图:基础知识,数据类型(数字,字符串,列表,元组,字典,集合),条件&循环,文件对象,错误&异常,函数,模块,面向对象...

    python学习教程
  • 我常用的4个备份工具

    不言而喻,备份对我们日常工作是非常重要的,前有GitLab误删300G数据实时恢复数据刺激过程,后有腾讯云故障丢失客户数据,遭千万索赔的尴尬场景。

    数据森麟
  • 记一次SQL Server报错注入

    需要测试一个网站,刚开始看到网站时感觉希望不大,因为验证码是需要拖动的,这也就意味着很大可能没办法爆破,另一方面是都用这种验证码了,安全做的能很差劲吗?果然,试...

    HACK学习
  • 干货收藏!Python完整代码带你一文看懂抽样

    导读:抽样是从整体样本中通过一定的方法选择一部分样本。抽样是数据处理的基本步骤之一,也是科学实验、质量检验、社会调查普遍采用的一种经济有效的工作和研究方法。

    华章科技

扫码关注云+社区

领取腾讯云代金券