python实现收邮件判断模块poplib,email
一、代码
# 输入邮件地址, 口令和POP3服务器地址:
import datetime
import email
import poplib
import email.policy
from email.parser import Parser
flag=False emailaddress = '******'
# 注意使用开通POP,SMTP等的授权码
password = '*******'
pop3_server = '*******' # 连接到POP3服务器:
server = poplib.POP3(pop3_server)
# 可以打开或关闭调试信息:
# server.set_debuglevel(1)
# POP3服务器的欢迎文字:
print(server.getwelcome()) # 身份认证:
server.user(self.emailaddress)
server.pass_(self.password) # stat()返回邮件数量和占用空间:
messagesCount, messagesSize = server.stat()
print('messagesCount:', messagesCount)
print('messagesSize:', messagesSize)
# list()返回所有邮件的编号:
resp, mails, octets = server.list()
print("resp:", resp)
print("mails:", mails)
print("octets:", octets) length = len(mails) print(length) for i in range(length):
i=length-i
resp, lines, octets = server.retr(i)
msg_content=b'\r\n'.join(lines)
msg = email.parser.BytesParser(policy=email.policy.default).parsebytes(msg_content)
print('发件人', msg['from'])
print('收件人', msg['to'])
print('主题', msg['subject'])
print('第一个收件人用户名', msg['to'].addresses[0].username)
print('第一个发件人用户名', msg['from'].addresses[0].username)
theme= msg['subject']
email_content=[part.get_content() for part in msg.walk() if part.get_content_maintype() == 'text'][0]
if theme=="启动查库任务分派机器人" and email_content==datetime.datetime.now().strftime("%Y%m%d"):
flag=True
break server.quit()
print(flag)
二、解决编码问题
import chardet #继承重写解析类
class BytesParser_new(email.parser.BytesParser):
def parsebytes(self, text, headersonly=False):
import chardet
encoding=chardet.detect(text).get("encoding")
text = text.decode(encoding, errors='surrogateescape')
return self.parser.parsestr(text, headersonly) msg = BytesParser_new(policy=email.policy.default).parsebytes(msg_content)
三、代码封装
import email
import poplib
import email.policy class ReadEmail(object):
def __init__(self, emailaddress, password, pop3_server):
self.emailaddress = emailaddress
self.password = password
self.pop3_server = pop3_server
self.server = poplib.POP3(pop3_server) def login(self):
# 可以打开或关闭调试信息:
self.server.set_debuglevel(1)
# POP3服务器的欢迎文字:
print(self.server.getwelcome())
# 身份认证:
self.server.user(emailaddress)
self.server.pass_(password) def read(self):
self.login()
# stat()返回邮件数量和占用空间:
messagesCount, messagesSize = self.server.stat()
print('messagesCount:', messagesCount)
print('messagesSize:', messagesSize)
# list()返回所有邮件的编号:
resp, mails, octets = self.server.list()
print("resp:", resp)
print("mails:", mails)
print("octets:", octets)
length = len(mails)
print(length) for i in range(1, length):
resp, lines, octets = self.server.retr(i)
msg_content = b'\r\n'.join(lines)
msg = email.parser.BytesParser(policy=email.policy.default).parsebytes(msg_content)
# print('发件人', msg['from'])
# print('收件人', msg['to'])
print('主题', msg['subject'])
# print('第一个收件人用户名', msg['to'].addresses[0].username)
# print('第一个发件人用户名', msg['from'].addresses[0].username)
theme = msg['subject']
email_content = [part.get_content() for part in msg.walk() if part.get_content_maintype() == 'text'][0]
if theme == "系统退信/The email is returned":
self.server.dele(i)
print("删除邮件成功:", msg['subject']) self.server.quit() if __name__ == '__main__':
emailaddress = '********'
# 注意使用开通POP,SMTP等的授权码
password = '********'
pop3_server = 'imap.qq.com'
rm=ReadEmail(emailaddress,password ,pop3_server )
rm.read()
python实现收邮件判断模块poplib,email的更多相关文章
- python之模块poplib之常见用法
		
# -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块poplib之常见用法 ''' 所以,收取邮件分两步: 第一步:用poplib把邮件的原始 ...
 - Python使用SMTP模块、email模块发送邮件
		
一.smtplib模块: 主要通过SMTP类与邮件系统进行交互.使用方法如下: 1.实例化一个SMTP对象: s = smtplib.SMTP(邮件服务地址,端口号) s = smtplib.SMTP ...
 - Python自动发邮件——smtplib和email库和yagmail库
		
''' 一.先导入smtplib模块 导入MIMEText库用来做纯文本的邮件模板 二.发邮件几个相关的参数,每个邮箱的发件服务器不一样,以163为例子百度搜索服务器是 smtp.163.com 三. ...
 - Python通过yagmail和smtplib模块发送简单邮件
		
SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件.HTML邮件以及带附件的邮件.python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是pytho ...
 - 使用Python内置的smtplib包和email包来实现邮件的构造和发送。
		
此文章github地址:https://github.com/GhostCNZ/Python_sendEmail Python_sendEmail 使用Python内置的smtplib包和email包 ...
 - python发送各类邮件的主要方法
		
更多详见: http://www.w3cschool.cc/python/python-email.html python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法 ...
 - 九、Python发送QQ邮件(SMTP)
		
看了廖雪峰老师的教程: 一封电子邮件的旅程就是 发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人 ...
 - Python之日志处理 logging模块
		
Python之日志处理(logging模块) 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logging模块日志流处理流程 使用logging四 ...
 - Python 【收发邮件】
		
发邮件 smtplib模块主要负责发送邮件 email模块主要负责构造邮件.这两个都是Python内置模块 smtplib.SMTP.方法 #按住Ctrl键并点击SMTP ,会看到对SMTP的解释(v ...
 
随机推荐
- shell脚本编程测试类型上
			
一bash的条件测试 判断某需求是否满足,需要由测试机制来实现.专用的测试表达式需要由测试命令辅助完成测试过程. 评估布尔声明,以便用在条件性执行中.若真,则返回0:若假,则返回1. 测试命令:• t ...
 - BlueStore-先进的用户态文件系统《二》-BlueFS
			
https://zhuanlan.zhihu.com/p/46362124 简介 上一篇文章中,介绍了BlueStore的诞生背景.逻辑架构以及设计思想,提到了在BlueStore中元数据都是存放在R ...
 - 使用node-static运行vue打包文件dist
			
vue打包后的文件dist,如果想上线之前查看效果,方法如下: npm install -g node-static 进入到dist文件夹,运行static命令 打开上面地址
 - 【软工项目Beta阶段】博客目录
			
绝不划水队Beta冲刺阶段博客目录 一.Scrum Meeting 第十周会议记录 第十一周会议记录 二.测试报告 Beta阶段测试报告 三.习得的软工原理/方法/技能? (1)在进行OUC-Mark ...
 - CDN技术之--全局负载均衡(GSLB)
			
负载均衡就是智能调度全局负载均衡(GSLB)的负载均衡主要是在多个节点之间进行均衡,其结果可能直接终结负载均衡过程,也可能将用户访问交付下一层次的(区域或本地)负载均衡系统进行处理.GSLB最通用的是 ...
 - (转)使用openGL显示图像(一)建立OpenGL ES的环境
			
编写:jdneo - 原文:http://developer.android.com/training/graphics/opengl/environment.html 要在应用中使用OpenGL E ...
 - python re.findall(rule,data),根据左右边界取值url中参数的值
			
import re ''' 取值postid,左边界"postid=",右边界"&" ''' url="http://wwww.baidu.c ...
 - Canal( 增量数据订阅与消费 )的理解及应用
			
canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB). 起源:早期,阿里巴巴B2B公司因为存 ...
 - C# winform 动态构建fastreport报表
			
private void DoPrint() { DataView dv = (DataView)dgv_apply_details.DataSource; Report report = new R ...
 - camunda任务的一些简单操作
			
public class ZccTaskService { TaskService taskService; @Before public void init(){ ProcessEngineConf ...