`
天梯梦
  • 浏览: 13731672 次
  • 性别: 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/

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    实例020 - 从控制台接收输入字符

    标题“实例020 - 从控制台接收输入字符”主要涉及的是在编程环境中,如何通过控制台获取用户的输入数据。在大多数编程语言中,这是一个基础但至关重要的技能,因为很多交互式程序都需要用户输入来运行。这篇博客可能...

    python项目练习-python3实现web服务器

    6. **博客讲解**:配合项目,可能有一个博客详细解释了每个步骤,包括如何设置环境、安装必要的依赖(尽管在这个例子中Python 3已经是内置支持的)、编写和运行服务器代码,以及如何测试服务器。 7. **测试与调试**...

    烟花代码编程python满屏-06-修改类属性.ev4.rar

    本课程“烟花代码编程python满屏-06-修改类属性”着重讲解了如何在Python中创建和修改类属性,以实现更灵活的代码设计。我们将探讨以下几个关键知识点: 1. **类的定义**:在Python中,我们可以使用`class`关键字来...

    Python基础教程-教案.docx

    【Python基础教程】 Python是一种广泛使用的高级编程语言,尤其在数据分析、网络...本教程将通过理论讲解、实例演示和实践操作相结合的方式,帮助学习者深入理解和掌握Python的基础知识,为后续进阶学习打下坚实基础。

    Python自学教程-05-socket的介绍.ev4.rar

    最后,`Python自学教程-05-socket的介绍.ev4.mp4`这个视频文件很可能是对以上内容的详细讲解,包括实例演示和常见问题的解答。通过学习这个教程,你应该能掌握Python socket编程的基本技巧,并具备开发简单的网络...

    python数字金字塔-33-了解引用之可变类型.ev4.rar

    文件名"python数字金字塔-33-了解引用之可变类型.ev4.mp4"可能是一个视频教程,详细讲解了如何利用Python的可变类型特性来构建数字金字塔,并通过实例演示了引用的工作原理。观看这个教程,你将更深入地理解Python中...

    实验4-Python-面向对象程序设计-Python基础教程-共2页.pdf

    实验4的目的是让学生深入理解Python中的面向对象编程(OOP)概念,并通过一系列的实践练习来熟练掌握这些技能。以下是一些关键知识点的详细说明: 1. **函数参数与实参**: - 形参(形式参数)是函数定义时使用的...

    Python基础教程-教案.doc

    在讲解Python环境搭建时,会演示如何安装和使用IDLE,这是Python自带的一个轻量级集成开发环境,适合初学者进行代码编辑和测试。此外,还会提及PyCharm、Anaconda Navigator、Jupyter Notebook、Python Console、...

    Python视频教程-目录遍历

    在视频教程“中谷教育-Python视频教程-35-文件-4-目录遍历.flv”中,讲师会详细讲解这些概念,并可能通过实例演示加深理解。配合阅读“python-目录遍历视频讲解.pdf”,可以更全面地掌握这一主题。

    Python程序设计-3期(KC017) D12.pdf

    1.2.4部分讲解了Python的注释语句。注释是程序中的非执行部分,用于提高代码的可读性。Python支持单行注释(以`#`开始)和多行注释(用三个单引号或双引号对包围)。 总的来说,这份学习资料涵盖了Python的基础知识...

    基于python自动办公-一键抓出PPT中的所有文字

    本教程将详细讲解如何利用Python实现一键抓取PPT文件中的所有文字,从而实现PPT内容的快速提取和分析。 首先,我们需要导入Python中的`python-pptx`库,这是一个用于读写Microsoft PowerPoint 2007 .pptx文件的库。...

    D-BUS实例讲解+D-Bus Specification

    首先,我们来看"D-BUS实例讲解.pdf",这可能是一份详细阐述如何在实际项目中使用D-Bus的教程。通常,这样的文档会涵盖以下几个方面: 1. **基础概念**:介绍D-Bus的核心概念,包括总线(Bus)、代理(Proxy)、服务...

    python项目实例代码源码-用Python批量重命名文件.zip

    这个"python项目实例代码源码-用Python批量重命名文件"的压缩包提供了一个实际应用的例子,帮助开发者理解如何在Python中实现这一功能。下面,我们将深入探讨这个主题,并详细讲解相关的知识点。 首先,批量重命名...

    10个Python爬虫入门实例-new.docx

    本教程通过10个简单实例,帮助初学者掌握Python爬虫的基本技能。以下将详细讲解涉及的知识点: 1. **Web交互原理**:Web交互基于HTTP(超文本传输协议)和HTTPS(安全版的HTTP)。当我们在浏览器中输入URL并按下...

    Python实现的查询mysql数据库并通过邮件发送信息功能

    在Python编程中,结合MySQL数据库和邮件服务可以创建实用的应用,例如监控数据库状态并在特定情况下自动发送报警邮件。本文将详细讲解如何实现这个功能。 首先,我们需要导入必要的Python库: 1. `MySQLdb` - 用于...

    python字典-14-函数嵌套调用应用之函数计算02.ev4.rar

    Python字典是编程语言Python中的一个核心数据结构,它提供了键值对的存储方式...这个资源“python字典-14-函数嵌套调用应用之函数计算02.ev4.mp4”应该会深入讲解这些概念,并提供示例代码,帮助你更好地掌握这一主题。

    python网编详细ppt讲解以及相关功能22个文件夹的源代码

    3. **socket编程**:Python的socket库是进行网络通信的基础,讲解如何创建socket对象,建立连接,发送和接收数据,以及关闭连接。 4. **HTTP请求与响应**:演示如何使用Python的requests库发送GET和POST请求,处理...

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

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

    Python基础教程(crossin全60课)

    - **主要内容**:讲解Python中的`print()`函数,用于输出信息到控制台。 - **知识点**: - `print()`函数的基本用法; - 如何在输出中加入换行符或制表符; - 使用逗号 `,` 分隔多个输出项; - 结合字符串格式...

Global site tag (gtag.js) - Google Analytics