一、本程序的起源
  当我决定去中科院实习的时候,我给刘奎恩老师发了封邮件。我对此事是非常看重的,因此经常使用浏览器,打开gmail去查看刘老师有没有给我回复。因为gmail的新邮件推送的功能仅限于打开浏览器,这样还是非常麻烦的。因此,我就想编写一个程序,这个程序的功能是发现gmail邮箱中的新邮件,并推送给我。
  这个程序最初的需求还是很简单的,只是发现新邮件,然后把有新邮件这个消息推送给我。由于我想学习python语言,因此考虑用python来开发。于是,我就从零开始了这个程序的开发。

二、准备工作
  由于此前没有接触过Python,因此熟悉python语言是我第一步需要做的。
  《A Byte of Python》是我学习Python第一本书。这本书是如它的名字一样,是本Python入门级教程,这本书面向的对象最低标准是没有接触过编程的人(够低的吧)。书中的内容不是很多,不过语言通俗易懂,还是很容易的把我领进了Python的大门。这本书涵盖从安装Python、操作数和表达式、模块、数据结构、输入输出、异常、标准库函数、简单实例等非常基础的内容。是一本很推荐的入门级教程,不论是谁我想都可以在两天内完成。通过这本书的学习,我对Python语法,数据结构、函数等有了大致的了解。
  看完《A Byte of Python》只是一小步,对于完成我最终的目标还是差很远,甚至,当时我都不知道从哪开始下手,所以又下载了一本《Learning Python.4th.Edition》,希望能够深入学习Python。打开这本书之后,我发现内容实在是太多了,一共有1K+页。我想,就这么只抓基础,没有重点的学习也不是事,不过程序由于是和邮件相关的,因此,肯定是网络编程,因此,我从网上下载了本《Foundations of Python3 Network Programming. 2nd Edition》,网上有中文译本,不过是第一版。第一版还是和第二版在需要用到的内容上有些不一样的,有些第一版的内容已经被淘汰了,另外,我希望能够锻炼我的英文阅读能力,基于以上两点,我在学习的时候是以英文版为主,当有不理解的地方借鉴第一版中文版。这本书还是很详细的介绍了Python网络编程的基础知识,对本程序的开发帮助很大。

三、学习、开发
  接下来就是工程量最大的学习、开发阶段了。学习和开发是相辅相成同时进行的,在学习过程中,根据学习的内容,也曾改变过程序的设计。
  在学习本书时,也不是从头看到尾,只是看和我的需求有关系的

  • E-mail Compotion and Decoding
  • SMTP
  • POP
  • IMAP

这几章。这几章的内容与开发email相关程序息息相关。
  除此之外,最有用的参考书籍就是官方文档,这其实比这本书更加有用。以后Python开发中会经常用到。

四、接下来的故事

  具体学习博客,请看我下一篇博客:用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(中)

  程序功能及完整代码,请看:用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(下)

用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(上)的更多相关文章

  1. Python 中格式化字符串 % 和 format 两种方法之间的区别

    Python2.6引入了 format 格式化字符串的方法,现在格式化字符串有两种方法,就是 % 和 format ,具体这两种方法有什么区别呢?请看以下解析. # 定义一个坐标值 c = (250, ...

  2. linux配置邮箱服务

    配置邮箱服务Linux常见的邮箱客户端是mail或mutt:服务端有sendmail服务(centos 5).postfix服务(centos 6).这里我们不使用本地的邮件服务,而是使用本地的邮件客 ...

  3. 微服务中台落地 中台误区 当中台遇上DDD,我们该如何设计微服务

    小结: 1. 微服务中台不是 /1堆砌技术组件就是中台 /2拥有服务治理就是中台 /3增加部分业务功能就是中台 /4Cloud Native 就是中台 https://mp.weixin.qq.com ...

  4. 用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(下)

    一.我的需求 我希望做成具有以下功能的软件:1. 间隔一段时间登录我的邮箱查看是否有未读邮件 如果不断的运行查看是否有新邮件确实没多大必要. 另外如果这个客户端登录我的邮箱,那么我可能就不能用浏览器登 ...

  5. 用Python实现gmail邮箱服务,实现两个邮箱之间的绑定(中)

    这篇博客,主要讲解用Python实现邮箱服务的几个需要学习的模块:E-mail Compotion and Decoding(邮件生成和解析).SMTP.POP.IMAP 如上篇博客所讲,我学习过程参 ...

  6. 使用AWS亚马逊云搭建Gmail转发服务(二)

    title: 使用AWS亚马逊云搭建Gmail转发服务(二) author:青南 date: 2014-12-31 14:44:27 categories: [Python] tags: [Pytho ...

  7. 使用AWS亚马逊云搭建Gmail转发服务(一)

    title: 使用AWS亚马逊云搭建Gmail转发服务(一) author:青南 date: 2014-12-30 15:41:35 categories: Python tags: [Gmail,A ...

  8. 使用AWS亚马逊云搭建Gmail转发服务(三)

    title: 使用AWS亚马逊云搭建Gmail转发服务(三) author:青南 date: 2015-01-02 15:42:22 categories: [Python] tags: [log,G ...

  9. Linux下设置python脚本文件为服务

    (最简单的方式nohup python xxx.py) ------------------------------------------------------------------------ ...

随机推荐

  1. 从头学起android<GridView网格视图.二十八.>

    GridView基于组件的网络格所有的形式的组分的,例如:当制作专辑,所有的图片将在相同的尺寸在不同的显示格在孩子,是否能够依靠这个组件完成.此组件的继承结构参见例如下面: java.lang.Obj ...

  2. [使用]Git--命令行

    如何利用终端命令将文件上传到github远程服务器 (1) git status 命令查看下状态. (2) git pull 更新代码,确保代码是库上最新代码,防止覆盖其他人的提交. (3) git ...

  3. 【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注

    原文:[百度地图API]建立全国银行位置查询系统(四)--如何利用百度地图的数据生成自己的标注 摘要: 上一章留个悬念,"如果自己没有地理坐标的数据库,应该怎样制作银行的分布地图呢?&quo ...

  4. javascript中类的属性研究

    原文:javascript中类的属性研究 本篇文章主要针对javascript的属性进行分析,由于javascript是一种基于对象的语言,本身没有类的概念,所以对于javascript的类的定义有很 ...

  5. 《自己动手写CPU》写书评获赠书活动结果

    <自己动手写CPU>写书评获赠图书的读者有: 京东:8***2.16号哨兵.magicyu.kk6803.jddickyd.杰出的胡兵 亚马逊:徐贺.马先童.jaychen.farmfar ...

  6. Android KeyStore Stack Buffer Overflow (CVE-2014-3100)

    /* 本文章由 莫灰灰 编写,转载请注明出处. 作者:莫灰灰    邮箱: minzhenfei@163.com */ 1. KeyStore Service 在Android中,/system/bi ...

  7. ASP.NET中 RegularExpressValidator(正则验证)的使用

    原文:ASP.NET中 RegularExpressValidator(正则验证)的使用 ylbtech-ASP.NET-Control-Validator: RegularExpressValida ...

  8. 设计模式学习--Factory Method

    What Factory Method:定义一个创建对象的接口,让子类来决定实例化哪一个类.Factory Method使一个类的实例化延迟到其子类. Why Factory Method是一个比較基 ...

  9. PHP 16: MySql的数据库访问

    原文:PHP 16: MySql的数据库访问 本章介绍PHP访问MySql的方法.如果你对MySQL不是很清晰,可以参看PHP 17: MySQL的简单介绍.对于数据库的操作,无非就是以下几个点: 如 ...

  10. 疯狂html5演讲(两):HTML5简经常使用的元素和属性(一个):html5保留经常使用的元素

    html5取出一小部分的元素和属性:主要删除的各种元素和属性与文档相关的风格.例<font>.width等待,html5建议规范css样式表来控制html文档样式. 1.基本元素 < ...