python 3 邮件的接收(IMAP)

【Python SMTP/POP3/IMAP】零基础也能轻松掌握的学习路线与参考资料 学习Python SMTP/POP3/IMAP需要了解相关协议的基本操作,如连接服务器、登录账号、获取邮件列表、获取指定邮件、发送邮件等。使用Python查看邮件的基本流程是:连接邮件服务器、登录账号、获取邮件列表、获取指定邮件,在控制台或文件显示邮件内容。使用Python接收邮件的基本流程是:连接邮件服务器、登录账号、获取邮件列表、获取指定邮件、删除邮件。使用Python发送邮件的基本流程是:连接邮件服务器、登录账号、构造邮件内容、发送邮件。文档内容比较全面,可以作为学习参考。Python邮件处理库。 阅读详情

因为前段时间在使用Ubuntu的时候,不想在GUI下接收邮件所以就打算自己写一个在命令行下接收邮件的程序,考虑到开发效率问题所以就直接用Python来写了。
(开发环境是Python3 + Ubuntu16.04 + IMAP协议)
参考资料:
python3 imaplib库的官方文档
https://docs.python.org/3/library/imaplib.html?highlight=imaplib#module-imaplib
python3 email库的官方文档
https://docs.python.org/3/library/email.html?highlight=email#module-email

邮件协议
在开始之前下面我们来认识一下邮件协议(POP3,IMAP,SMTP)

协议 功能
POP3 主要用于客户端远程管理服务器上的邮件
IMAP 交互式邮件访问协议
SMTP 简单邮件传输协议
下面就简单的来说一下各协议的区别,协议的详细内容可以自行查看网络资料,和相关书籍

POP3
POP3协议是Post Office Protocol 3的简称,即邮局协议的第3个版本,是TCP/IP协议族中的一员(默认端口是110)。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。

IMAP
IMAP全称是Internet Mail Access Protocol,即交互式邮件访问协议,是一个应用层协议(端口是143)。用来从本地邮件客户端(Outlook Express、Foxmail、Mozilla Thunderbird等)访问远程服务器上的邮件。

SMTP
SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议(25号端口)。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。我们知道SMTP协议简单来说就是一个邮件发送的传输协议(不提供邮件接收功能),而POP3和IMAP这两个协议是邮件的接收(下载)协议。那么POP3和IMAP的区别是什么呢?

POP3和IMAP协议的区别
下面就来说一说这两个协议的主要区别。
虽然这两个协议都是从邮件服务器那里下载邮件到本地的协议,但是不同的是IMAP提供跟邮件服务器的双向通信,也即在客户端所作的更改会反馈给服务器端,跟服务器端形成同步(例如删除邮件,创建文件夹等等的操作)。而POP3是单向通信的,即下载邮件到本地就算了,所作的更改都只是在客户端,不会反映到服务器端。所以使用IMAP协议也会更便捷,体验更好,更可靠。

用Python3开发
因为我本身的开发环境的问题,所以就直接采用python进行开发。

登陆邮箱
用python来开发邮件接收程序非常的简单,主要还是用两个自带的库就可以了,imaplib库和email库。一开始先用import把两个库导入进来。

import imaplib
import email  #导入两个库

conn = imaplib.IMAP4_SSL(port = '***',host = '***')
print('已连接服务器')
conn.login('***@outlook.com','password')
print('已登陆')

上面的代码中port和host可以在网页上登陆服务器然后在邮箱设置里面就能看到邮箱提供的IMAP协议的域名跟端口了。conn.login(‘账号’,’密码’)用来登陆邮箱(使用平时登陆的账号密码)。完成这两步连接并登陆上邮箱后,就可以进行下一步的相关操作了。

下载邮件
在下载邮件之前我们必须先选择邮箱中的一个文件夹

conn.select() 

查看官方文档可以知道这个函数的默认值是’INBOX’,如果之前自己没有改过邮箱的收件夹,一般默认就是INBOX,不用在函数里面填写其他参数。

type, data = conet.search(None, 'ALL') 

搜索匹配的邮件,第一个参数是字符集,None默认就是ASCII编码,第二个参数是查询条件,这里的ALL就是查找全部。该函数返回的是字符数组,我们只需要数组的第一个元素,数组的第一个元素是邮件的编号,并且按接收时间按升序排序并且中间用空格隔开。例如[‘1 2 3 4 5 6 7 8 9 10 ……’],所以现在我们只需把这些用空格隔开的数分离开来放到一个新的数组就OK了,newlist=data[0].split()。
然后可以调用fetch()方法来取回邮件,不过取回来的邮件是一堆乱七八糟不知道什么鬼的东西,我们要把我们取回的邮件用email库来进行一些处理。

如果我们要取回第一封邮件可以把newlist[0]传递给fetch()

type, data = conet.fetch(newlist[0], '(RFC822)')

msg = email.message_from_string(data[0][1].decode('utf-8')) 

用utf-8解码,否侧会报错
这样我们就把取回来的乱七八糟的东西交给了email库来处理,接下来我们只需要操作email库就好了。

解析邮件
我们把解析的任务交给email库来处理。
我们现在就可以用email库来从邮件中提取出我们需要的信息了,例如标题,邮件的日期,等等有用的信息。
要提取出标题信息我们可以用get()

 sub = msg.get('subject')

 #用get()获取标题并进行初步的解码。

 subdecode = email.header.decode_header(a)[0][0]

  #打印标题
 print(subdecode.decode('utf-8'))

其他的标头信息都可以通过get()来获得。

下面来获取信体部分

 for part in msg.walk():
        # 如果ture的话内容是没用的
        if not part.is_multipart():            
            print(part.get_payload(decode=True).decode('utf-8')) 
            # 解码出文本内容,直接输出来就可以了。

walk()函数能历遍邮件所有部分,所以通常都把它放到for循环里面使用。然后再使用is_multipart()函数来判断内容是否有用,打印出有用内容最后用get_payload(decode=True).decode(‘utf-8’)解码并且打印到控制台。通常这个循环有两次,第一次是单纯的字符串格式的,能在控制台显示出来的,第二次循环打印的是像HTML的格式,能在浏览器里查看,就像平时看到的邮件那样。

好了,邮件的接收就说到这里了。更多的详细情况可以自己去我在开头给的两个连接里面查看。有什么错误也可以在下面给我留言。

python利用imaplib/email实现收取解析邮件内容及保存附件 'How to Read Emails in Python'---通过imaplib, email库实现邮件读取 阅读详情

相关推荐

python 邮件解析_python_imap收取邮件 + 邮件内容解析

# -*- coding: utf-8 -*-import emailimport imaplibimport refrom openerp import httpfrom email import headerclass Advertisefor(http.Controller):@http.route('/advertisefor/getemaillist/', type='http', cs...

weixin_39903477的博客 2328

Python实现IMAP协议接收并解析邮件内容

Python实现IMAP协议接收并解析邮件内容

LSH1628340121的博客 8130

使用Python中的imaplib模块接收邮件

我们首先安装了imaplib模块,然后编写了示例代码来演示如何连接到IMAP服务器、登录邮箱账号、选择邮箱文件夹、搜索邮件、获取邮件内容等操作。其中,imaplib模块可以用于与邮件服务器进行交互,从而实现接收邮件的功能。在本文中,我们将详细介绍如何使用imaplib模块接收邮件,并提供相应的源代码示例。如果你使用的是Python 2.x版本,那么imaplib模块已经是Python的内置模块,无需额外安装。在实际使用中,你可以根据需求进行更多的操作,比如只接收未读邮件、按日期范围搜索邮件等。

DevAstro的博客 1122

Python 3 邮件的接收(IMAP)

因为前段时间在使用Ubuntu的时候,不想在GUI下接收邮件所以就打算自己写一个在命令行下接收邮件的程序,考虑到开发效率问题所以就直接用Python来写了。 (开发环境是Python3 + Ubuntu16.04 + IMAP协议) 参考资料: python3 imaplib库的官方文档 python3 email库的官方文档邮件协议在开始之前下面我们来认识一下邮件协议(POP3,IMAP,

Chiva Studio 1万+

【python】用IMAP获取电子邮件

大家好,我是胡亥大魔王。今天介绍python中用IMAP获取电子邮件

Hit the keyboard hard 2235

Anti-UAV 反无人机大赛数据集处理脚本(1)标签转换为YOLO格式

【代码】Anti-UAV 反无人机大赛数据集处理脚本(1)标签转换为YOLO格式。

qq_45937329的博客 534

使用python3查收与发送邮件

文章目录使用python3查收与发送邮件基本配置及模块导入接收邮件发送邮件 使用python3查收与发送邮件 邮件的接收和发送是日常工作必备的内容,前一段时间我需要进行工作交接,从上万分邮件中找到和某些关键词相关的邮件,并以附件的形式发送给不同的人,一共有600多个这样的关键词,如果要手动执行,我需要手动执行600多次,这简直让人无法接收。因此为了自动化该过程,我学习了python3如何接收和发送邮件的过程,并试着完成该项目交接。中间遇到了各种各样的问题,由于同时我还要处理新的工作,只能利用业余时间来一一解

qq_35696312的博客 956

cocos2dx lua + protobuf

vs 2015 cocos2dx 3.10  lua  protobuf1. 下载 protobuf 源码     https://github.com/bnnswyp/protobuf/tree/master/protobuf-2.5.0    解压后的文件列表如下所示         其中 vsprojects 文件夹为 protobuf 的vs 工程2. 打开 protobuf.sln 编译...

u014486706的博客 2163

Python3中通过Zmail库发送电子邮件

一、Zmail 是什么 Zmail或许是最简单的邮件收发库,开发网址为: https://github.com/ZYunH/zmail GITHUB中的Zmail 在上述github下载压缩包 zmail-master.zip 。说明文档在其中,见Readme.md和README-cn.md。其中介绍中说: Zmail allows you to send and g...

邵玉斌的专栏 6489

用Python爬取公众号历史所有文章,看这篇就够了

手把手教你爬取公众号历史所有文章

u010522887的专栏 1万+

TI AWR2944毫米波雷达开发板开箱:用官方Demo快速上手3D点云与热图生成

本文详细介绍了TI AWR2944毫米波雷达开发板的开箱与实战应用,包括硬件准备、软件开发环境搭建、Demo固件刷写与配置、实时可视化与数据解析等全流程指南。通过官方Demo快速上手3D点云与热图生成,帮助开发者高效掌握毫米波雷达技术在工业检测、智能交通等领域的应用。

weixin_42627853的博客 308

Python通过163和QQ收发邮件emails

自动化办公少不了自动收、发邮件。收邮件通过SMTP协议,发邮件通过POP3或IMAP协议。

XerCis的博客 1942

数据分析是什么?

说道“数据分析”一词,大家应该并不陌生,数据分析从字面上来理解,就是对数据做出分析然后得出一个结论,看起来浅显易懂,下面我们把这个词语分开得到的是“数据”与“分析”。“数据”的范围就很广泛了,小到一个计量数字,大到成亿级别的数据汇总,都可以称为数据;“分析”一词并不难理解,以智慧思维的方法对某一事物做出合理的解释,给出结论是为分析,一般会用到数学上的分析方法,比如统计学或者概率论等等。 1. 什么是数据分析 1) 数据分析发展背景 进入到 21 世纪以后,伴随着互联网的迅速发展,大数据应运而生,越来越多的数

MC_XY的博客 5432

[506]python实现邮件接收、附件下载

发送邮件 SMTP协议 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了。 import smtplib from emai...

周小董 1万+

电机控制-PMSM无感FOC控制(五)SVPWM过调制策略优化与谐波抑制

本文深入探讨了PMSM无感FOC控制中的SVPWM过调制策略优化与谐波抑制。针对电机高速运行时电压利用率不足的问题,分析了过调制技术的必要性,并详细阐述了分区过调制、谐波注入及闭环优化等主流策略,旨在提升电压利用率与抑制电流谐波,实现电机高性能控制。

convnet3designer的博客 353

Windows Server安装Intel I219-V网卡驱动完整教程

在Windows Server系统上安装Intel I219-V网卡驱动的方法。

小白成长历程 5177

Python接收邮件的几种方式

工作中,我们基本上都用过电子邮件的客户端,比如说 OutLook,Foxmail,从配置项可以知道,SMTP 协议用于发送邮件,POP3 和 IMAP 协议用于接收邮件。其实很多编程语言都...

somenzz的博客 1万+

一文吃透:从零到一开发一套 ABAP RAP 应用的完整路径

ABAP RAP开发实战摘要 本文系统介绍了ABAP RESTful Application Programming Model (RAP)在企业级应用开发中的实施路径。文章以出差申请业务场景为例,详细拆解了RAP开发的六步主线流程: 数据库表设计:规范主键、审计字段设计 CDS数据建模:通过视图定义业务对象实体及关联 行为定义与实现:使用BDEF声明事务规则,Behavior Pool类实现业务逻辑 业务对象投影:裁剪服务接口视图 服务定义与绑定:按OData协议暴露服务 UI集成测试:支持Fiori E

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 509

使用python接收imap邮件

最近研究邮件透明加密技术,需要测试imap服务,然而邮件客户端不好用所以需要自己编写代码,这里使用python编写。这里关于邮件透明加密技术,推荐天御云安的隐密邮,部署简单,不影响用户使用习惯,非常好的一款产品。网址:https://mail.tyyunan.com/ import getpass, imaplib import time import pickle import email,st...

weixin_44021440的博客 4818

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python3 imap pop3、邮箱自动下载附件,分析邮件内容

python3,imap,pop3,邮件附件自动下载

qq_28461727的博客 4042

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

使用pop3和imap接收邮件并解析

使用python内置的smtplib可以利用smtp协议来发送邮件,本文是使用pop3和imap两种方式来接收邮件,并对邮件内容进行解析。 利用IMAP协议接收邮件 需要用到的库均为Python内置库: import imapclient import email import email.parser import email.policy import base64 imapclient用来从邮件服务器下载邮件,email,email.parser和email.policy用来解析邮件内容,b

piglite的专栏 3176

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python通过IMAP实现邮箱客户端

概述 在日常工作生活中,都是利用个人或公司的邮箱客户端进行收发邮件,那么如何打造一款属于自己的邮箱客户端呢?本文以一个简单的小例子,简述如何通过Pyhton的imaplib和email两大模块,实现邮件的接收并展示,仅供学习分享使用,如有不足之处,还请指正。 涉及知识点 在本示例中,涉及知识点如下所示: imaplib模块:此模块实现通过IMAP【Internet Message Access Protocol,信息交互访问协议】协议进行邮箱的登录,接收和发送等功能。 IMAP4_SSL(host=

绳锯木断,水滴石穿,专心写文,无问西东!!! 7046

python使用imap接收邮件的过程...郁闷的探索

我只是个python初 学者..... 想用python做一个很简单的接收邮件的功能,只看python的官方doc(http://docs.python.org/2/library/imaplib.html)真的很不好懂,经过google之,探索之,稍微总结一下: 要使用imap接收邮件,当然要导入imaplib拉. import imaplib 然后按常规的,建立链接→登录

luyafei_89430的专栏 1万+

python接收邮件_python接收邮件

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!同时删除保存在邮件服务器上的邮件,而pop3服务器则是遵循pop3协议的接收邮件服务器,用来接收电子邮件的。 后来又出现了imap协议(interactive mail access protocol),即交互式邮件访问协议,与pop3的不同在于:开启了imap后,在电子邮件客户端收...

weixin_39734399的博客 832

理解SMTP与IMAP协议:Python中的邮件发送与接收

它涉及到多种协议,其中SMTP和IMAP是最关键的。本文将详细介绍这两个协议,并提供Python代码示例,帮助你理解如何在Python中实现邮件的发送和接收。SMTP和IMAP协议在邮件通信中扮演着重要的角色。Python提供了内置的库来处理这些协议,使得发送和接收邮件变得非常简单。希望这篇博客对你在Python中处理邮件通信有所帮助。SMTP(简单邮件传输协议)是发送电子邮件的标准协议。它在TCP/IP协议的应用层中定义了邮件传输的过程。IMAP(互联网消息访问协议)是用于从服务器获取邮件的标准协议。

Web安全工具库 822

python基础语法22-IMAP接收邮件

IMAP是一种电子邮件检索协议,它不会下载电子邮件。它只是读取它们并显示它们。这在低带宽条件下非常有用。Python的客户端库称为imaplib用于通过 imap 协议访问电子邮件。 IMAP代表Internet Mail Access Protocol.它于 1986年首次提出。

a316495442的博客 2183
上一篇: python+selenium之处理alert弹出对话框
下一篇: 利用Python imaplib和email模块 读取邮件文本内容及附件内容
diyiday
博客等级 码龄9年 225粉丝 197原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值