SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
python中有简洁可用的smtp模块,为邮件收发提供了便利,联系之前的用python写的爬虫爬下段子网站的段子(源博客:http://www.cnblogs.com/fuzzer/p/5094568.html),我们可以将其爬下的内容作为邮件内容进行发送。
源代码如下:
import sys import re import urllib import smtplib import random from email.mime.text import MIMEText to=['duem123321@163.com'] host="smtp.163.com" #smtp服务器 user="duem123321" #用户名 password="******" #密码 postfix="163.com" #后缀 def gethtml(url): page=urllib.urlopen(url) html=page.read() return html def getmessage(html): p=re.compile(r'<div class="content">(.*)</div><script type="text/javascript">') #对段子内容进行正则匹配 message=re.findall(p,html)#返回正则匹配的结果 return message def send_mail(to_list,sub,content): me="段子*"+"<"+user+"@"+postfix+">" msg = MIMEText(content,_subtype='plain',_charset='gb2312') #charset可改为utf-8根据实际情况 msg['Subject'] = sub msg['From'] = me msg['To'] = ";".join(to_list) try: server = smtplib.SMTP() server.connect(host) server.login(user,password) server.sendmail(me, to_list, msg.as_string()) server.close() return True except Exception, e: print str(e) return False if __name__ == '__main__': i=random.randint(1,500) i=str(i) web=gethtml('http://ishuo.cn/subject/'+i) #该网站段子的链接特点 message=getmessage(web) message2=''.join(message)#将结果转换为字符串类型 #message2=message2.decode('utf8') message2=str(message2) print message2 if send_mail(to,"每天一则搞笑段子",message2): print "Suceed!" else: print "Failed!"
自行选择encode的方式:简体中文:gb2312 繁体中文:big5 UNICODE:UTF-8
收信结果如下:
可以将代码上传至购买的服务器,修改设置其运行时间,设置收信人列表,每天一则给想带去欢乐的人带去一点欢乐。
ps:文章里有一篇关于如何配置放于服务器上。