`
天梯梦
  • 浏览: 13632622 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

Python实例讲解 -- 接收邮件 (亲测)

阅读更多

1. 主要使用了 poplib 组件

 

# -*- coding: utf-8 -*-

import poplib
from email import parser

host = 'pop.gmail.com'
username = 'mine@gmail.com'
password = '*******'

pop_conn = poplib.POP3_SSL(host)
pop_conn.user(username)
pop_conn.pass_(password)

#Get messages from server:
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]

# Concat message pieces:
messages = ["\n".join(mssg[1]) for mssg in messages]

#Parse message intom an email object:
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
for message in messages:
    print message['Subject']
pop_conn.quit()
 

优点: 可以输出内容

缺点: 只检测一次

 

 

2. 使用第三方插件 chilkat

 

# -*- coding: utf-8 -*-

import sys
import chilkat

host = 'pop.gmail.com'
username = 'mine@gmail.com'
password = '******'

# The mailman object is used for receiving (POP3)
# and sending (SMTP) email.
mailman = chilkat.CkMailMan()

# Any string argument automatically begins the 30-day trial.
success = mailman.UnlockComponent("30-day trial")
if (success != True):
    print "Component unlock failed"
    sys.exit()

# Set the GMail account POP3 properties.
mailman.put_MailHost(host)
mailman.put_PopUsername(username)
mailman.put_PopPassword(password)
mailman.put_PopSsl(True)
mailman.put_MailPort(995)

# Read mail headers and one line of the body.
# To get the full emails, call CopyMail instead (no arguments)
bundle = mailman.GetAllHeaders(1)

if (bundle == None ):
    print mailman.lastErrorText()
    sys.exit()

for i in range(0,bundle.get_MessageCount()):
    email = bundle.GetEmail(i)

    # Display the From email address and the subject.
    print email.ck_from()
    print email.subject() + "\n"

 

安装见附件

主页:http://www.chilkatsoft.com/products.asp

安装:http://www.chilkatsoft.com/installPython27.asp

 

安装很简单,点击 showPythonPath.bat 测试一下环境,然后复制 _chilkat.pyd chilkat.py 到 Python27\Lib\site-packages\ 下就可以

 

 

优点: 可以多次检测

缺点: 只可以看到来源和主题,无法看到内容

 

 

 

3. 检测邮件,返回未读数值

 

def gmail_checker(username,password):
        import imaplib,re
        i=imaplib.IMAP4_SSL('pop.gmail.com')
        try:
                i.login(username,password)
                x,y=i.status('INBOX','(MESSAGES UNSEEN)')
                messages=int(re.search('MESSAGES\s+(\d+)',y[0]).group(1))
                unseen=int(re.search('UNSEEN\s+(\d+)',y[0]).group(1))
                return (messages,unseen)
        except:
                return False,0

# Use in your scripts as follows:

messages,unseen = gmail_checker('mine@gmail.com','******')
print "%i messages, %i unseen" % (messages,unseen)
 

 

 

4. 很好的返回主题和内容

 

import imaplib
import email

def extract_body(payload):
    if isinstance(payload,str):
        return payload
    else:
        return '\n'.join([extract_body(part.get_payload()) for part in payload])

conn = imaplib.IMAP4_SSL("pop.gmail.com", 993)
conn.login("mine@gmail.com", "******")
conn.select()
typ, data = conn.search(None, 'UNSEEN')
try:
    for num in data[0].split():
        typ, msg_data = conn.fetch(num, '(RFC822)')
        for response_part in msg_data:
            if isinstance(response_part, tuple):
                msg = email.message_from_string(response_part[1])
                subject=msg['subject']                   
                print(subject)
                payload=msg.get_payload()
                body=extract_body(payload)
                print(body)
        typ, response = conn.store(num, '+FLAGS', r'(\Seen)')
finally:
    try:
        conn.close()
    except:
        pass
    conn.logout()
 

参考: http://www.doughellmann.com/PyMOTW/imaplib/

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)

    可以使用Python的email模块来实现带有附件的邮件的发送。 SMTP (Simple Mail Transfer Protocol)邮件传送代理 (Mail Transfer Agent,MTA) 程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送...

    一个python爬虫基础知识、爬虫实例、反爬机制等资源

    这篇文章详尽地介绍了Python爬虫的基础知识、实例应用以及反爬机制等内容,为初学者和有经验的开发者提供了宝贵的参考资源。 在基础知识部分,文章深入浅出地讲解了爬虫的工作原理,包括HTTP请求与响应的发送与接收...

    Python网络编程基础

    本书实用性强,共提供了大约175个实例,6600行以上的代码,是帮助读者全面而快速地学习Python语言、编写网络程序的佳实践。本书可以作为各层次Python、Web和网络程序的开发人员的参考书,在实际工作中使用书中的技术...

    数据抓取之Python3抓取JSON格式的星球大战电影实体

    前面作者讲解了很多知识图谱相关的原理知识,包括知识图谱相关技术、Neo4j绘制关系图谱等,但还是缺少一个系统全面的实例。为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者学习了张...

    Python与shell的3种交互方式介绍

    那么,怎么样把hello.py输出内容发送给TestInput.py,最后TestInput.py打印接收到的”hello, world!”。下面我来逐步讲解一下shell的交互方式。 hello.py代码如下: 复制代码 代码如下: #!/usr/bin/python print ...

    Python装饰器用法实例总结

    本文实例讲述了Python装饰器用法。分享给大家供大家参考,具体如下: 写装饰器 装饰器只不过是一种函数,接收被装饰的可调用对象作为它的唯一参数,然后返回一个可调用对象(就像前面的简单例子) 注意重要的一点,...

    python高速数据操作内存操作redis模块详细讲解和示例源代码

    可以通过PubSub类的实例来订阅频道,并接收发布的消息。 5. Transaction类:表示事务操作,可以将一系列操作封装在一个事务中,保证这些操作的原子性。可以通过Transaction类的实例来执行事务操作。 除了以上类,...

    Python中使用socket发送HTTP请求数据接收不完整问题解决方法

    由于工作的需求,需要用python做一个类似网络爬虫的采集器。虽然Python的urllib模块提供更加方便简洁操作,但是涉及到一些底层的需求,如手动设定User-Agent,Referer等,所以选择了直接用socket进行设计。当然,这样...

    基于python select.select模块通信的实例讲解

    select()方法接收并监控3个通信列表, 第一个是所有的输入的data,就是指外部发过来的数据,第2个是监控和接收所有要发出去的data(outgoing data),第3个监控错误信息在网上一直在找这个select.select的参数解释, 但...

    python入门到高级全栈工程师培训 第3期 附课件代码

    python入门到高级全栈工程师培训视频学习资料;本资料仅用于学习,请查看后24小时之内删除。 【课程内容】 第1章 01 计算机发展史 02 计算机系统 03 小结 04 数据的概念 05 进制转换 06 原码补码反码 07 物理层和...

    举例讲解Python程序与系统shell交互的方式

    那么,怎么样把hello.py输出内容发送给TestInput.py,最后TestInput.py打印接收到的”hello, world!”。下面我来逐步讲解一下shell的交互方式。 hello.py代码如下: #!/usr/bin/python print "hello, world!" Test...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    多态实例讲解 本节作业之选课系统开发 第7周 心灵分享 上节回顾 静态方法、类方法、属性方法 课堂扯淡 深入讲解类的特殊成员方法__init__等 深入讲解类的特殊成员方法__new__等 反射详解 异常处理TryExcept 网络...

    django框架零基础讲解知识点以及实战案例的开发

    通过小案例:用户登录的功能来讲解通过jquery validate插件进行表单验证以及通过jquery form进行表单数据提交,以及后端接收数据 讲解缓存:cookie,session 讲解django自带的中间件,以及自己创建中间件 实战开发...

    PyQt4 精彩实例分析26个例子

    pyqt4精彩实例讲解,适合pyqt4初级学习者,经供参考第6行创建了一个 QPush Button对象,并设置它的显示文木为“ Hello Kitty!",由于此处并 没有指定按钮的父窗体,因此以自己作为主窗凵 第7行调用show()方法,显示...

Global site tag (gtag.js) - Google Analytics