当前位置: 首页 > news >正文

淘宝的网站建设情况网站建设微信公众号

淘宝的网站建设情况,网站建设微信公众号,兰州 网站建设公司哪家好,安宁网站建设 熊掌号一、简介IMAP(Internet Message Access Protocol)#xff0c;这个协议与POP一样#xff0c;也是从邮件服务器上下载邮件到本机#xff0c;不过IMAP比POP的功能要更加强大些#xff0c;IMAP除支持POP所有功能外#xff0c;还支持以下功能#xff1a;多个邮件文件夹(收件箱…一、简介IMAP(Internet Message Access Protocol)这个协议与POP一样也是从邮件服务器上下载邮件到本机不过IMAP比POP的功能要更加强大些IMAP除支持POP所有功能外还支持以下功能多个邮件文件夹(收件箱、发件箱、垃圾邮件...)IMAP服务器上进行标记如Seen, Replied, Read, Deleted在服务器端的文件夹之间拷贝和移动邮件...在IMAP的各版本中最流行的是IMAP4。我们就使用IMAP4由于我需要搜索是否有未读邮件也就是利用邮件服务器的Flag所以IMAP是非常适合的我的程序就利用的是IMAP。在Python的标准库包含一个imaplib模块可以利用这个模块。但是这个模块的缺陷就是把大量解析的工作留给客户端程序员。二、IMAPClientIMAPClient是一个非常受欢迎的IMAPCLient包这个模块不在标准Python库中。IMAPClient包是由一名叫做Menno Smits的Python程序员编写的。官网网址http://imapclient.freshfoo.com/。可以在这里查看手册文档。这个包是基于标准库imaplib不过要更强大。下面我们来介绍下怎样安装。1. virtualenv说实话我本人对virtualenv的理解也不透彻以字面上来理解为虚拟环境。可以把一些模块、包安装在特定的virtualenv里一旦安装了virtualenv你就创建任意多个自组织的虚拟python环境在这个环境里可以安装、下载包。好吧废话就不多说直接说方法。这里是virtualenv的详细说明上面介绍了非常详细的安装方法按照我自己的经验可以简化为以下步骤$ [sudo] pip install virtualenv$ [sudo] pip install https://github.com/pypa/virtualenv/tarball/develop$ curl -O https://pypi.python.org/packages/source/v/virtualenv/ virtualenv-X.X.tar.gz$ tar xvfz virtualenv-X.X.tar.gz$ cd virtualenv-X.X$ [sudo] python setup.py install注意上面下载的 virtualenv-X.X.tar.gz 中的X是型号需要把它改成数字详细版本类型可以参考https://pypi.python.org/packages/source/v/virtualenv/这样virtualenv已经安装好。下面需要创建虚拟环境实例步骤如下$ virtualenv --no-site-packages myenv$ cd myenv2. 安装IMAPClientmyenv 为自己定义的虚拟环境的名字。这样我们已经在myenv里面接下来就可一安装IMAPClient包了。步骤如下$ sudo pip install imapclient$ python -c import imapclient此时可以在python下使用imapclient模块但是不能在python3下使用在网上查了一些资料尤其是看了上面的那个介绍virtualenv的网页没找到有用的但是回头发现这个imapclient是好使的了不用进入gmapenv直接使用即可got it!注意上面用到了pip工具如果没有的话一定要安装啊。$ sudo apt-get install pip三、开始正式学习IMAP1. 因为可能会出现中文因此在程序的最上面必须加上如下代码#-*- encoding: utf-8 -*-#-*- encoding: gbk -*-2. 所需模块importgetpass, email, sysfrom imapclient import IMAPClient3. 连接服务、登录账户这一步也没什么好讲的。代码如下#通过以下方式连接smtp服务器没有考虑异常情况详细请参考官方文档c IMAPClient(hostname imap.gmail.com, sslTrue)try:c.login(username, passwd)#登录个人帐号exceptc.Error:print(Could not log in)sys.exit(1)4. 进入收件箱查看未读邮件c.select_folder(INBOX, readonly True)result c.search(UNSEEN)利用select_folder()函数进行文件夹INBOX为收件箱readonly True 表明只读并不修改任何信息利用search()函数选择想要的邮件UNSEEN是邮件的flag关于邮件的flag就不特别说明了返回邮件的message-id5. 有了未读邮件的ID(result)下面利用fetch()函数将邮件取来(下载到本机)msgdict c.fetch(result, [BODY.PEEK[]] )通过fetch()函数取得邮件内容fetch()的详细介绍请见这里fetch(self, message, data) 其中self参数可忽略message为message_id data 的作用是抓取message中的哪些部分。  官方文档中没有给出data的其他可选的参数我一开始怎么都不找到最终在stackoverflow中进行提问一位大哥把这个文档介绍给我在 6.4.5 FETCH Command 。这里面非常详细的介绍了各个函数的各种细节当然也可以查到data其他可选的参数 6.4.5 表示的是原书的节。特别感谢这位哥们人类的力量是无穷的啊我们只需要BODY.PEEK[]即可。6. 已经把邮件取出下面开始解析邮件for message_id, message inmsgdict.items():e email.message_from_string(message[BODY[]]) #生成Message类型7. 得到的 e 即为Message类型的邮件先面开始将又将中解析出From, Subject还记得上面在POP讲解中我们遇到的不能显示中文的问题吗在IMAP中仍会出现下面就讲解解决办法由于From, Subject header有可能有中文必须把它转化为中文在这个点上耽误了我很长时间最终在网上查到了一个方法http://blog.csdn.net/bonnshore/article/details/8729984 虽然不是很明白但是能把问题解决就是王道。代码如下subject email.header.make_header(email.header.decode_header(e[SUBJECT])) #必须保证包含subjectmail_from email.header.make_header(email.header.decode_header(e[From]))8. 从Message e中解析出content正文同上一篇的POP一样根据get_payload()返回的不同类型选择解析方法代码如下maintype e.get_content_maintype()if maintype multipart:for part ine.get_payload():if part.get_content_maintype() text:mail_content part.get_payload(decodeTrue).strip()elif maintype text:mail_content e.get_payload(decodeTrue).strip()#此时需要把content转化成中文利用如下方法try:mail_content mail_content.decode(gbk)exceptUnicodeDecodeError:print(decode error)sys.exit(1)9. 至此我们已经完成了查看是否有未读邮件。如果有的话将未读邮件的From, Subject, content解析出来。正如上面完成的 mail_from, subject, mail_content一样现在可以完美的显示即使有中文四、完整代码#-*- encoding: utf-8 -*-#-*- encoding: gbk -*-#因为可能会用到中文所以必须有上面的这两句话#引入模块及IMAPClient类importgetpass, email, sysfrom imapclient importIMAPClienthostname imap.gmail.com #gmail的smtp服务器网址username myUserNamegmail.compasswd ***c IMAPClient(hostname, ssl True) #通过一下方式连接smtp服务器没有考虑异常情况详细请参考官方文档try:c.login(username, passwd)#登录个人帐号exceptc.Error:print(Could not log in)sys.exit(1)else:c.select_folder(INBOX, readonly True)#利用select_folder()函数进行文件夹INBOX为收件箱readonly True 表明只读并不修改任何信息result c.search(UNSEEN)msgdict c.fetch(result, [BODY.PEEK[]] )#现在已经把邮件取出来了下面开始解析邮件for message_id, message inmsgdict.items():e email.message_from_string(message[BODY[]]) #生成Message类型#由于From, Subject header有可能有中文必须把它转化为中文subject email.header.make_header(email.header.decode_header(e[SUBJECT]))mail_from email.header.make_header(email.header.decode_header(e[From]))#解析邮件正文maintype e.get_content_maintype()if maintype multipart:for part ine.get_payload():if part.get_content_maintype() text:mail_content part.get_payload(decodeTrue).strip()elif maintype text:mail_content e.get_payload(decodeTrue).strip()#此时需要把content转化成中文利用如下方法try:mail_content mail_content.decode(gbk)exceptUnicodeDecodeError:print(decode error)sys.exit(1)else:print(new message)print(From:, mail_from)print(Subject:, subject)getstr input(if you wanna read it, input y:)if getstr.startswith(y):print(-*10, mail content, -*10)print(mail_content.replace(, \n))print(-*10, mail content, -*10)finally:c.logout()五、总结至此我们已经学习了利用Python编写邮件服务的所有非常基本的内容由于我的需求不是很高目标不是做成一个功能强大的邮箱客户端所以诸如MIME、附件、图片等功能都没有学习当然也没有介绍。因为我们现在接收的邮件大多数都是MIME格式的不过上文的包含了点解析MIME格式邮件的代码。详细请参考《Foundations of Python3 Network Programming. 2nd Edition》Chaper E-mail Composition and Decoding。
http://www.pierceye.com/news/209397/

相关文章:

  • 网站开发的母的目的和意义.建设购物平台网站
  • 立方米网站建设做淘宝客网站用什么程序好
  • 怎样做网站挣钱建筑资料软件
  • 涿州建设局网站苏州市高新区建设局网站
  • 个人soho要怎么做企业网站成都包装设计公司
  • 网站开发 chrome浏览器崩溃ruhe用dw做网站
  • 全屏网站 图片优化个人网站cms系统
  • 做我女朋友程序网站邵东做网站
  • 建设网站如何挂到网上wordpress首页添加幻灯
  • 汕头正规网站建设模板总部城乡建设网站 资料员
  • vs 2017c 怎么建设网站网站建设的数字化和互联网化
  • 南昌网站设计公司海南营销网站建设
  • 购物网站素材个人搭建网站教程
  • 青岛网站建设哪里好模板建站服务公司
  • 青色网站欣赏wordpress中文购物
  • 建站培训全国住房与城乡建设部网站
  • 唐山网站建设方案策划沧州网站建设联系电话
  • 网页制作和网站开发实验报告logo设计品牌
  • 摄影后期教程网站百度指数1000搜索量有多少
  • wp网站建设模板什么是网站的原型
  • 园林绿化网站建设上海著名室内设计公司
  • 大连市住房与城乡建设部网站公司要制作网站
  • 郑州做网站七彩科技企业网站做的漂亮
  • 如何用ps做网站页面设计企业网站备案价格
  • 禅城网站建设价格青岛企业自助建站系统
  • 平阳住房和城乡建设厅网站建设银行龙卡信用卡在境外网站支付
  • 关于网站开发的论文软件开发合同模板免费
  • 军队房地产与建设工程法律实务在哪个网站可以购买深圳市盐田区住房建设局网站
  • 网站虚拟主机空间喊别人做的网站不肯给代码
  • 导游是什么商丘seo公司