搭建邮件日报实战

1、我们需要一个开源的Linux系统

然后通过shell脚本,自动生成要发送的内容

2、我们通过python 编写邮件发送程序

发送邮件的协议是SMTP,首先我们先到邮箱的设置页面开启我们的服务


发送邮箱

# -*- coding: utf-8 -*-
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP_SSL
import xlrd
import sysdef send_mail(receiver):host_server = 'smtp.qq.com'  # QQ邮箱的SMTP服务器sender_qq = '960751327'  # 发件人的QQ号码pwd = '*******'  # QQ邮箱的授权码sender_qq_mail = '960751327@qq.com'  # 发件人邮箱地址data = xlrd.open_workbook('filename.xlsx')  # 打开文件table = data.sheets()[0]content = []content = table.row_values(0)mail_content = str(content[0]) + ' ' + str(content[1]) + ' ' + str(content[2]) + ' ' + str(content[3])  # 邮件正文内容mail_title = '测试文件'  # 设置邮件标题smtp = SMTP_SSL(host_server)  # SSL 登录smtp.set_debuglevel(0)  # set_debuglevel()是用来调试的。参数值为1表示开启调试模式,参数值为0关闭调试模式smtp.ehlo(host_server)  # 连接服务器smtp.login(sender_qq, pwd)  # 邮箱登录msg = MIMEText(mail_content, "plain", 'utf-8')  # 填写正文内容msg["Subject"] = Header(mail_title, 'utf-8')  # 填写邮件标题msg["From"] = sender_qq_mail  # 发送者邮箱地址msg["To"] = receiver  # 接收者邮件地址try:smtp.sendmail(sender_qq_mail, receiver, msg.as_string())  # 发送邮件函数smtp.quit()  # 发送邮件结束print("Successfully Send!")  # 输出成功标志except:print("The sever is busy,please continue later.")if __name__ == "__main__":try:receiver = sys.argv[1]except:receiver = '313281592@qq.com'  # 收件人邮箱地址send_mail(receiver)  # 调用函数,发送邮件

接收邮箱

import poplib
# 解析邮件
from email.parser import Parser
from email.header import decode_header
from email.utils import parseaddr# 解析消息头中的字符串
# 没有这个函数,print出来的会使乱码的头部信息。如'=?gb18030?B?yrXWpL3hufsueGxz?='这种
# 通过decode,将其变为中文
def decode_str(s):value, charset = decode_header(s)[0]if charset:value = value.decode(charset)return value# 解码邮件信息分为两个步骤,第一个是取出头部信息
# 首先取头部信息
# 主要取出['From','To','Subject']
'''
From: "=?gb18030?B?anVzdHpjYw==?=" <justonezcc@sina.com>
To: "=?gb18030?B?ztLX1Ly6tcTTys/k?=" <392361639@qq.com>
Subject: =?gb18030?B?dGV4dMTjusM=?=
'''# 如上述样式,均需要解码
def get_header(msg):for header in ['From', 'To', 'Subject']:value = msg.get(header, '')if value:# 文章的标题有专门的处理方法if header == 'Subject':value = decode_str(value)elif header in ['From', 'To']:# 地址也有专门的处理方法hdr, addr = parseaddr(value)name = decode_str(addr)# value = name + ' < ' + addr + ' > 'value = nameprint(header + ':' + value)# 头部信息已取出# 获取邮件的字符编码,首先在message中寻找编码,如果没有,就在header的Content-Type中寻找
def guess_charset(msg):charset = msg.get_charset()if charset is None:content_type = msg.get('Content-Type', '').lower()pos = content_type.find('charset=')if pos >= 0:charset = content_type[pos + 8:].strip()return charset# 邮件正文部分
# 取附件
# 邮件的正文部分在生成器中,msg.walk()
# 如果存在附件,则可以通过.get_filename()的方式获取文件名称def get_file(msg):for part in msg.walk():filename = part.get_filename()if filename != None:  # 如果存在附件filename = decode_str(filename)  # 获取的文件是乱码名称,通过一开始定义的函数解码data = part.get_payload(decode=True)  # 取出文件正文内容# 此处可以自己定义文件保存位置path = filenamef = open(path, 'wb')f.write(data)f.close()print(filename, 'download')def get_content(msg):for part in msg.walk():content_type = part.get_content_type()charset = guess_charset(part)# 如果有附件,则直接跳过if part.get_filename() != None:continueemail_content_type = ''content = ''if content_type == 'text/plain':email_content_type = 'text'elif content_type == 'text/html':print('html 格式 跳过')continue  # 不要html格式的邮件email_content_type = 'html'if charset:try:content = part.get_payload(decode=True).decode(charset)except AttributeError:print('type error')except LookupError:print("unknown encoding: utf-8")if email_content_type == '':continue# 如果内容为空,也跳过print(email_content_type + ' -----  ' + content)# get_file(msg)
if __name__ == '__main__':email = '960751327@qq.com'password = '********'server = poplib.POP3_SSL('pop.qq.com')server.user(email)server.pass_(password)# 登录的过程resp, mails, octets = server.list()index = len(mails)  # 邮件的总数# 此处的循环是取最近的几封邮件for i in range(index - 2, index + 1):resp, lines, octets = server.retr(i)  # 取邮件msg_content = b'\r\n'.join(lines).decode('utf-8', 'ignore')msg = Parser().parsestr(msg_content)# http-server.dele(index) 删除邮件get_header(msg)get_file(msg)get_content(msg)server.quit()

当我们在发送的过程遇到一些问题要怎么解决

发送含正文同时含附件的邮件

当我们在发送的过程遇到一些问题要怎么解决

用python搭建邮箱,自动收发邮箱相关推荐

  1. vb 发送html邮件,VB.net教您一招可以实现邮件自动发送自动收发邮箱

    VB.NET发送电子邮件(通过使用SmtpClient类) 以下代码已通过VS2008测试. [vb] view plain copy ''' ''' 通过SmtpClient类发送电子邮件 ''' ...

  2. 30行Python代码实现自动收发邮件

    生活或者工作中我们经常容易忘记一些事情,这时候我们需要借助一些事物来提醒我们.读者中应该有很多运维攻城狮和测试攻城狮,服务器有异常时需要提醒我们,自动化测试执行完需要发送测试报告,这时我们可以借助邮件 ...

  3. 使用Python实现键盘记录器和邮箱自动通知

    文章目录 键盘记录器 参考 (1)键盘记录器-模块实现 (2)发送邮箱-模块实现 (3)模块合并 键盘记录器 参考   <python:搞事情!键盘记录并截屏>, 地址https://ba ...

  4. Python实现邮箱自动群发工资条

    Python实现邮箱自动群发工资条 excel的内容 效果 需要用的库: openpyxl smptlib email.mime.text email.header 1.获取excel表的数据 wb ...

  5. Python+Selenium自动化测试——126邮箱自动登录脚本(登录首页是二维码,切入账号密码输入框)

    Python+Selenium自动化测试--126邮箱自动登录脚本 版权声明:本文为博主原创文章,未经允许不得转载.https://blog.csdn.net/qiao_wan/article/det ...

  6. Python自动获取邮箱验证码【上集】

    本文阅读时长:3-5min 声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 前置:Google IMAP协议设置 与 专用密码设置 本次教程为自动获取邮箱验证码实 ...

  7. 使用USB 3G上网卡+树莓派搭建接受短信自动转发邮箱的服务

    背景:人在国外刚下飞机   咳咳,人在国外,国内很多网络,电话服务都需要短信验证,一直以来都用的双卡手机来解决这个问题.最近换了单卡手机,琢磨着3g上网卡应该可以接受短信,再配合7D24H运行的树莓派 ...

  8. python自动登录教程_python+selenium实现163邮箱自动登陆的方法

    本文介绍了 让我们先来预览一下代码运行效果吧: 首先分析163邮箱登陆页面的网页结构(按F12或单击鼠标右键选择审查元素) 1.定位到登陆框(注意登录框是一个iframe,如果不定位到iframe的话 ...

  9. python自动发送邮件(html、附件等),qq邮箱和网易邮箱发送和回复

    在python中,我们可以用程序来实现向别人的邮箱自动发送一封邮件,甚至可以定时,如每天8点钟准时给某人发送一封邮件.今天,我们就来学习一下,如何向qq邮箱,网易邮箱等发送邮件. 一.获取邮箱的SMT ...

  10. python自动登陆邮箱

    python自动登陆邮箱 #!/usr/bin/env python3 # -*- coding: utf-8 -*-from selenium import webdriver from selen ...

最新文章

  1. Python库glob学习笔记
  2. 破解网页禁止使用“复制”、“粘贴“
  3. 安全攻防技能——Web安全——SQL注入
  4. 遭遇“生活天花板”,如何用 OKR 弯道超车?
  5. web.config中配置Session
  6. bootstrap轮播,播放到最后一张图片的时候,就不正确了。
  7. layui中日期格式化方式
  8. 18. OD-反调试研究,破解反调试,编写反调试
  9. SQL Server商业智能中ODS表和Dim表必须有的字段
  10. Javascript对象扩展 - JsPoint类
  11. 【CNMP系列】CentOS7.0下安装Nginx服务
  12. wp8.1 全球化解决办法
  13. 5个提高效率的编程工作环境
  14. C语言32个关键字详解
  15. 2022-2027年中国环锻件行业市场全景评估及发展战略规划报告
  16. 我眼中的程序化交易之路
  17. js ajax实现五极联动,前端见微知著AngularJS备忘篇:温故而知新,可以为师矣
  18. 关于KOT、KOL、KOC 理解
  19. hive笔记(与上一偏 《hadoop集群搭建》结合)
  20. 最全大数据学习资源整理

热门文章

  1. 《跃迁:成为高手的技术》读后感
  2. c语言字符幂函数怎么编写,我如何自己编写幂函数?
  3. adobe photoshop cs6 安装
  4. 一秒等于多少毫秒_新知|一秒有多长?你以为的“一瞬间”有多快?
  5. 幼儿园计算机课件制作,幼儿园课件制作工具
  6. 会议OA项目之我的会议排座批审功能
  7. FPGA vs ASIC
  8. 计算机用什么配置好电脑,买电脑主要看哪些配置 决定电脑好坏的关键
  9. python拦截广告弹窗_通过python实现弹窗广告拦截过程详解
  10. 新西兰 计算机 转专业,新西兰可接受转专业院校