python 自动监控最新邮件并读取的操作

我就废话不多说了,大家还是直接看代码吧~

#zmail库:可以用几行代码帮我们收取一封邮件
import zmail
#输入账号和密码
server=zmail.server('13163964546@qq.com','jie110341')
#获取最新的一封邮件
mail=server.get_latest()
#读取邮件
#zmail.show(mail)
#读取邮件的部分内容
print(mail['subject'])
......
#读取附件 邮件 存放路径 如果有同名文件则覆盖
zmail.save_acctachment(mail,target_path=None,overwrite=True)

需要在电脑上下载zmail库

补充:Python邮箱实施监控电脑

我就废话不多说了,大家还是直接看代码吧~

import smtplib
import poplib
import email
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import decode_header
def send_email(account, password, email_title, send_text="", file_names=None, file_dir="."):
  msg = MIMEMultipart()
  # msg = MIMEText(HTML, 'html') -- 只能发送文本内容
  content = MIMEText(send_text, "plain", "utf-8")
  msg.attach(content)
  # 文件类型
  if isinstance(file_names, list):
    for file_name in file_names:
      send_file_path = file_dir + "/" + file_name
      part = MIMEApplication(open(send_file_path, 'rb').read())
      part.add_header('Content-Disposition', 'attachment', filename=file_name)
      msg.attach(part)
  elif isinstance(file_names, str):
    send_file_path = file_dir + "/" + file_names
    part = MIMEApplication(open(send_file_path, 'rb').read())
    part.add_header('Content-Disposition', 'attachment', filename=file_names)
    msg.attach(part)
  # msg['from'],msg['to']接收端显示的发件人与收件人
  msg['from'] = "奥巴马@163.com"
  msg['to'] = account
  msg['subject'] = email_title
  try:
    server = smtplib.SMTP()
    server.connect('smtp.163.com')
    server.login(account, password)
    # from_addr:发送地址; to_addrs:接收地址(字符串列表)
    server.sendmail(account, msg['to'].split(), msg.as_string())
  except Exception as e:
    print(e)
# 获取邮件标题
def get_email_subject(addr, password):
  # 设置连接网址,获取pop3协议的邮件读取对象
  read = poplib.POP3('pop.163.com', timeout=3600)
  # 输入邮件地址与邮件登录密码
  read.user(addr) # 163邮箱用户名
  read.pass_(password) # 163邮箱设置中的客户端授权密码
  # allEmails = (totalNum, totalSize)
  # 读取邮件信息(邮件总数,邮件尺寸)
  total_num, total_size = read.stat()
  # top(which,howmuch)
  # 获取最新的一封邮件(第几封邮件,获取多少封)
  top_email = read.top(total_num, 1)
  # print("***** start *****\n接收的数据为: {}\n***** end *****\n".format(top_email))
  #
  # print("***** start *****\n[解码前]获取的初始邮件内容: {}\n***** end *****\n".format(top_email[1]))
  # 解码邮件信息,将解码后的邮件信息存入tmp
  tmp = []
  for s in top_email[1]:
    tmp.append(s.decode())
  # print("***** start *****\n[解码后]的邮件内容为: {}\n*****  end  *****\n".format(tmp))
  # 将解码后的邮件内容拼接为字符串
  email_str = '\n'.join(tmp)
  # 将字符串类型解析为Message类型
  message = email.message_from_string(email_str)
  # print("***** start *****\n"
  #    "[解码前]的邮件字符串内容为: [数据类型]{}\n{}\n"
  #    "--------------------------------------------\n"
  #    "[解码后]的邮件字符串内容为: [数据类型]{}\n{}\n"
  #    "***** end *****\n"
  #    .format(type(email_str), email_str, type(message), message))
  # 获取邮件主题
  subject_str = message['subject']
  # print("***** start *****\n[解码前]邮件标题: {}\n***** end *****\n".format(subject_str))
  subject = decode_header(subject_str)
  # print("***** start *****\n[解码后]邮件标题: {}\n***** end *****\n".format(subject))
  content = subject[0][0]
  enc_type = subject[0][1]
  if enc_type:
    subject_decode = content.decode(enc_type)
  else:
    subject_decode = content
  return subject_decode, read, total_num

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • python如何发送带有附件、正文为HTML的邮件

    一.HTML格式怎么发送右键 1.准备HTML代码作为内容 2.把邮件的subtype设置为html 3.发送 4.举个例子:自己发给自己一个HTML格式的文件 from email.mime.text import MIMEText ​ main_content = """ <!DOCTYPE html> <html lang = "en" <head> <meta charset = "UTF-8"

  • python 实现网易邮箱邮件阅读和删除的辅助小脚本

    简介: 在Windows下的网易邮箱大师客户端中,阅读邮件时,可以使用快捷键Delete删除邮件,然后自动跳到下一封,如果再按一次Delete键,再跳到下一封.为了迅速的阅读邮件,同时删除没有必要的邮件,特地写了如下脚本,自用同时放出来共享. 问题: 1. 如上图,我积累太多未读邮件,原因是每天邮件太多,根本看不完,数量马上到上限了: 2. 我想看到每封邮件: 3. 邮件有时内容太过鸡肋,属于知晓型即可,看完即可删除: 4. 大多数看完就要删除,一个个删除太麻烦: 一句话,需要自动删除我看完之后

  • python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警

       使用Windows的wmic命令,获取可执行文件的运行状况.文件路径.PID,如果可执行文件挂掉,就重启并邮件告警. 因为监控的可执行文件的文件名一样,不好区分,所以我使用文件的绝对路径为标准来判断是否正常运行,代码及详细解释如下: # -*- coding: utf-8 -*- import os import win32api import smtplib from email.mime.text import MIMEText def get_pidWay(file_name): e

  • 用python监控服务器的cpu,磁盘空间,内存,超过邮件报警

    监控Linux服务器嘛,脚本逻辑基本上是用os.popen模块,然后把获取到的结果通过split切分成一个list,再拿目标list值和我阈值对比,超过就邮件报警: 邮件是通过Linux的mailx发出去的,可自行搜索安装该模块,关键字:"Linux使用mailx发邮件",脚本如下: 一.cpu ideal值,不小于20% #!/usr/bin/python # -*- coding: utf-8 -*-   import datetime import os     f = os.p

  • python实现发送邮件

    本文用163邮箱进行了测试,python用的是3.8版本进行的测试 1.设置邮箱,如下图所示 2.设置过程如下图所示: 设置完成后,添加如下代码: # coding:utf-8 #强制使用utf-8编码格式 import smtplib # 加载smtplib模块 from email.mime.text import MIMEText from email.utils import formataddr from email.header import Header #需要设置的内容如下所示:

  • Python实现邮件发送的详细设置方法(遇到问题)

    设置部分: 首先网页登录QQ邮箱设置一些待会儿会用到的参数: 首先开启POP3/SMTP和IMAP/SMTP服务, 然后生成授权码,然后复制到代码中来(只有smtp.qq.com需要生成授权码,在网易163邮箱中只需要登录密码就可以了) 代码部分: import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart def sendMail(msg): #发送邮件的邮

  • python 自动监控最新邮件并读取的操作

    我就废话不多说了,大家还是直接看代码吧~ #zmail库:可以用几行代码帮我们收取一封邮件 import zmail #输入账号和密码 server=zmail.server('13163964546@qq.com','jie110341') #获取最新的一封邮件 mail=server.get_latest() #读取邮件 #zmail.show(mail) #读取邮件的部分内容 print(mail['subject']) ...... #读取附件 邮件 存放路径 如果有同名文件则覆盖 zm

  • 利用Python自动监控网站并发送邮件告警的方法

    前言 因为有一些网站需要每日检查是否有问题,所以需要一个报警监控的机制,这个需要你指定你发送的邮箱和你接收的邮箱,就可以做到对网站自动监控了. 这里用的是python3.5 需要安装的插件: 1.smtplib:发邮件需要用到 2.pycurl:访问网站时会需要用到 3.linecache:在读取txt网站清单时需要用到 具体思路: python程序从txt里面批量读取到网站的信息,通过Curl.py模拟浏览器去访问网站,并且把访问的结果写入到以自己的网站名称-日期.txt格式的文件中记录;有几

  • Python自动生成代码 使用tkinter图形化操作并生成代码框架

    背景 在写代码过程中,如果有频繁重复性的编码操作,或者可以Reuse的各类代码,可以通过Python写一个脚本,自动生成这类代码,就不用每次手写.或者copy了. 比如新建固定的代码框架.添加一些既定的软件逻辑,通讯协议.消息模板等等,再编写一套代码时,或者一个Function时,每次使通过脚本一键生成代码,就不需要每次都写一遍了,同时可以把相关软件逻辑放进去,也能避免出错. 脚本代码 Demo_CodeGenerator.py 具体详细代码去掉了,大家想生成什么样的代码就在mycode中app

  • python 根据excel中颜色区分读取的操作

    要求: 读取以下表格中所有字体为大红色或者单元格颜色为黄色的信息 利用到的模块是:openpyxl import openpyxl filename="colortest.xlsx"#读取excel workbook=openpyxl.load_workbook(filename) worksheet=workbook.get_sheet_by_name("试题2")#读取Sheet rows,cols=worksheet.max_row,worksheet.max

  • python自动发邮件库yagmail的示例代码

    之前使用的python的smtplib.email模块发模块的一步步骤是: 一.先导入smtplib模块  导入MIMEText库用来做纯文本的邮件模板 二.发邮件几个相关的参数,每个邮箱的发件服务器不一样,以126为例子百度搜索服务器是  smtp.126.com 三.写邮件主题和正文,这里的正文是HTML格式的 四.最后调用SMTP发件服务 一般发邮件方法 我以前在通过Python实现自动化邮件功能的时候是这样的: import smtplib from email.mime.text im

  • python脚本监控logstash进程并邮件告警实例

    supervisor虽然也能拉起来logstash进程,但是有时候supervisor也会挂,也有时会拉不起,就算拉起来了也没有邮件告警功能 ,所以编写一个python脚本监控所有服务器,以下代码只列举了一台服务器,需要更多服务器在列表里面添加就行! (日志采集过程中连续几天数据异常,由于服务器太多,当时不太想一一去将近40台服务器查看logstash进程,但又一直查不出原因,后来就每台服务器查看logstash进程,果然发现3台采集搜索日志的logstash进程没了,然后就编写了此脚本监控,效

  • 学会python自动收发邮件 代替你问候女友

    每天工作忙,学会python自动收发邮件,代替你问候女友 1.相关库介绍 1)yagmail Yet Another GMAIL/SMTP client: 非常方便的SMTP包,超简单的Python发邮件模块: 需要单独安装,不包含在Python标准模块里: yagmail官网链接 2)keyring 从Python访问系统密钥环服务(即密码不用直接写在代码里): 方便.安全地储存你的密码: 需要单独安装,不包含在Python标准模块里: keyring官网链接 3)schedule 超容易理解

  • python装饰器实现对异常代码出现进行自动监控的实现方法

    异常,不应该存在,但是我们有时候会遇到这样的情况,比如我们监控服务器的时候,每一秒去采集一次信息,那么有一秒没有采集到我们想要的信息,但是下一秒采集到了, 而后每次的采集都能采集到,就那么一次采集不到,我们应该针对这一次采集不到进行分析吗,这种的情况可以说无法重复出现,我们也无法避免,因为外界的因素太多太多,我们无法去控制这些外面的因素,所以我们会有这样的需求,一段时间内出现频率多少次,我们才能显示一次报警,或者说,一段时间内出现的频率达到我们的异常许可范围我们认为这样的属于异常,我们可以发出报

  • 如何使用Python自动生成报表并以邮件发送

    数据分析师肯定每天都被各种各样的数据数据报表搞得焦头烂额,老板的,运营的.产品的等等.而且大部分报表都是重复性的工作,这篇文章就是帮助大家如何用Python来实现报表的自动发送,解放你的劳动力,可以让你有时间去做更有意思的事情. 首先来介绍下实现自动报表要使用到的Python库: pymysql 一个可以连接MySQL实例并且实现增删改查功能的库 datetime Python标准库中自带的关于时间的库 openpyxl 一个可以读写07版以后的Excel文档(.xlsx格式也支持)的库 smt

  • python自动统计zabbix系统监控覆盖率的示例代码

    脚本主要功能: 1)通过zabbix api接口采集所有监控主机ip地址: 2)通过cmdb系统(蓝鲸)接口采集所有生产主机IP地址.主机名.操作系统.电源状态: 3)以上2步返回数据对比,找出未监控主机ip地址,生成csv文件: 4)发送邮件. 脚本如下: #!/usr/bin/python #coding:utf-8 import requests import json import re import time import csv from collections import Cou

随机推荐