python 接收邮件(pop3与imap)

本文介绍了电子邮件协议POP3与IMAP的主要区别。IMAP允许用户在不下载所有邮件内容的情况下,通过客户端直接操作服务器上的邮件,而POP3则会将邮件下载到本地。文章还提供了两种协议的Python示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先是pop3与imap的区别:
在这里插入图片描述

简单来说主要区别就是imap可以不用把所有的邮件全部下载,就通过客户端直接对服务器上的邮件进行操作。IMAP它只下载邮件的主题,并不是把所有的邮件内容都下载下来.

pop3

import poplib

emailServer = poplib.POP3('192.168.88.7')
emailServer.user('qa01@corp.globalmarket.com')
emailServer.pass_('123456')

# 获取一些统计信息
emailMsgNum, emailSize = emailServer.stat()
print 'email number is %d and size is %d'%(emailMsgNum, emailSize)

# 遍历邮件,并打印出每封邮件的标题
for i in range(emailMsgNum):
    for piece in emailServer.retr(i+1)[1]:
        if piece.startswith('Subject'):
            print '\t' + piece
            break

emailServer.quit()

imap

import imaplib, string, email
M = imaplib.IMAP4_SSL("imap.gmail.com")
print M
try:
    try:
        M.login('chemboking@gmail.com','12345678')
    except Exception,e:
        print 'login error: %s' % e
        M.close()
    M.select()
    result, message = M.select()
    typ, data = M.search(None, 'ALL')
    for num in string.split(data[0]):
        try:
            typ, data = M.fetch(num, '(RFC822)')
            msg = email.message_from_string(data[0][1])
            print msg["From"]
            print msg["Subject"]
            print msg["Date"]
            print "_______________________________"
        except Exception,e:
            print 'got msg error: %s' % e
    M.logout()
    M.close()
except Exception, e:
    print 'imap error: %s' % e
    M.close()

转载自:http://chembo.iteye.com/blog/961486

### POP3IMAP协议的主要差异 #### 协议定义 POP3(Post Office Protocol version 3)是一种用于接收电子邮件的协议,其工作方式是在用户设备上创建邮件副本并通常会从服务器删除原始邮件[^2]。 IMAP(Internet Message Access Protocol),同样作为接收邮件的方式之一,允许用户直接管理服务器上的邮件而不必下载到本地。这意味着任何对邮件的操作都会同步至服务器端。 #### 邮件存储位置 对于采用POP3协议的情况而言,一旦完成数据交换过程之后,大多数情况下邮件会被保存于用户的个人电脑或其他终端装置之中;相比之下,在利用IMAP的情况下,所有的邮件都将被储存在远程的服务提供商处直至用户采取行动将其永久移除为止。 #### 同步功能对比 当涉及到多台不同类型的客户机访问同一账户内的信件时,由于IMAP具备良好的双向通信机制,因此可以确保所有更改都能及时反映在整个网络环境之内——无论是通过网页界面还是专用应用程序来查看收件箱内容都能够保持一致性和最新状态。然而,基于POP3模式下工作的系统一般不具备这种特性,因为每次连接建立完成后便不再维持同远端主机间的联系了。 ```python # Python伪代码展示两种协议处理新邮件的不同逻辑 def handle_new_email_pop3(email_id, local_storage): email_data = fetch_from_server(email_id) save_to_local(local_storage, email_data) delete_on_server(email_id) def handle_new_email_imap(email_id, server_connection): mark_as_read(server_connection, email_id) update_flags(server_connection, email_id) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值