最近公司产品做活动,市场运营部门的同事需要每天看活动数据,数据格式是固定,每天都要提取一遍发邮件过去真的是很烦啊,于是乎就想自己写个脚本,本地执行,实现自动化获取数据及发送数据邮件.

公司企业邮箱类型:企业邮箱Foxmail
收件服务器名称(mail_type): imap.exmail.qq.com
收件服务器端口(mail_ssl): 993
发件服务器名称(send_mail_type): smtp.exmail.qq.com
发件服务器端口(send_mail_ssl): 465

程序思路:
首先登陆邮箱,检索邮箱内的未读邮件,循环遍历邮件,读取邮件详情内容,正则匹配查找目标邮箱账号,如果匹配到则获取数据发送邮件,否则继续执行程序.
注:只要匹配到目标邮箱账号,不管其具体内容,直接发送数据邮件(因为领导一般只发邮件说要数据,当投个机)

说明:
程序发送邮件时候如果采用邮箱提供的端口(465)时,不知道为什么速度很慢,甚至会报错,而使用smtplib的默认端口(25),则响应很快,至于原因我也不是很清楚.先码下…..

# coding:utf-8
import re
import time
import json
import imaplib
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 目标邮箱账号
the_pattern = "********@**.com"class GetMail(object):@classmethoddef mail_login(self, mail_type, mail_ssl, mail_username, mail_password):"""邮箱登录,并检索目标人未读邮件"""get_server = imaplib.IMAP4_SSL(mail_type, mail_ssl)get_server.login(mail_username, mail_password)get_server.select("INBOX")  # 默认收件夹是INBOXtyp, data = get_server.search(None, 'UNSEEN')  # SEEN--已读邮件,UNSEEN--未读邮件,ALL--全部邮件if data[0]:number_list = data[0].split()  # 邮件编号list,编号越大邮件时间越近for the_mail_number in number_list:# 将邮件标记为已读get_server.store(the_mail_number, '+FLAGS', '\\SEEN')# 邮件内容详情mail_data = str(get_server.fetch(the_mail_number, '(RFC822)')[1])# 正则匹配查找目标邮箱账号if re.search(the_pattern, mail_data):self.send_mail(mail_username, mail_password)get_server.logout()return 'END'else:print "未匹配到目标邮箱,继续执行"return 'CONTINUE'else:print "未检索到未读邮件"@classmethoddef send_mail(self, mail_type, mail_username, mail_password):"""发送邮件"""# 邮件内容msg = self.the_task()       # 获取文件数据内容message = MIMEText("'%s'" % msg, 'plain', 'utf-8')# 发件人message['From'] = Header(mail_username, 'utf-8')# 收件人message['To'] = Header(the_pattern, 'utf-8')# 邮件主题message['Subject'] = Header('邮件主题:测试', 'utf-8')# 发件服务器send_mail_type = 'smtp.exmail.qq.com'try:# 发短信采用默认端口25,不然会报错send_server = smtplib.SMTP(send_mail_type, 25)send_server.login(mail_username, mail_password)send_server.sendmail(mail_username, the_pattern, message.as_string())print "邮件发送成功!!!"send_server.quit()except smtplib.SMTPException:print "邮件发送失败"@classmethoddef the_task(self):"""获取邮件内容,并返回数据,类型为json"""# 做了假数据,具体获取活动数据的方法就不写了data_dict = {'task_1': 100, 'task_2': 101, 'task_3': 102}json_data = json.dumps(data_dict)return json_datadef process_start():while True:ret = GetMail.mail_login(mail_type='imap.exmail.qq.com', mail_ssl=993, mail_username='*********@***.cn', mail_password='*********')if ret == 'END':print "邮件已发送,休眠一分钟继续执行"# 休眠一分钟继续执行time.sleep(60)else:print "休眠一分钟继续执行"time.sleep(60)continueif __name__ == "__main__":# 执行程序process_start()

Python登录邮箱,并回复邮件相关推荐

  1. python登录邮箱爬邮件,python爬虫10:定时与邮件

    本关学习两个功能: 一.定时爬虫 二.定时邮件 总体上可以将程序分为三个功能块:[爬虫]+[邮件]+[定时] 如何查看网页编码:网页右键--查看网页源代码--会弹出新的标签页--搜索'charset' ...

  2. python登录邮箱#183;

    import poplib #接受邮件 import smtplib # 发送邮件 from email.header import decode_header #编码解码 from email.mi ...

  3. 使用Python登录QQ邮箱发送QQ邮件

    这真是黑科技啊,原来推送的广告邮件就是这样产生的.好人用来发节日贺卡,给女朋友纪念邮件:坏人会学着发广告,垃圾邮件.我希望大家能学会了做些有趣的有意义的事情. 今天我带大家实现下简单的发邮件功能.我们 ...

  4. python pop3_python通过pop3方式登录邮箱(qq,新浪,网易)

    python内置模块登录邮箱(SMTP/POP3) 使用pdfminer解析pdf合同附件,简单的提取一下里面的内容 压缩包已经上传! poplib_emain.py内容(完整版): # coding ...

  5. Python——Python使用POP3协议客户端poplib登录邮箱并解压缩zip、rar压缩包

    文章目录 1. 项目背景 2. poplib模块 3. 邮箱登录 4. 获取邮件内容 1. 获取邮件基本信息 2. 获取邮件中的附件 5. 解压zip/rar压缩包 1. 打开zip/rar压缩包 2 ...

  6. python登录代码思路_用python登录Dr.com思路以及代码分享

    用python登录Dr.com思路以及代码分享 发布于 2014-08-28 22:31:52 | 192 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对 ...

  7. 如何用python实现邮箱发送信息

    这篇文章主要为大家详细介绍了python实现邮箱发送信息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了python实现邮箱发送信息的具体代码,供大 ...

  8. python发送邮箱_你知道怎么用Python发送邮件吗?

    作者 | 陈熹 来源 | 早起Python(ID:zaoqi-python) 头图 | CSDN 下载自东方IC 前言 本文主要对邮件操作基础知识及代码进行介绍,用Python发邮件有哪些优势? 批量 ...

  9. 公司企业邮箱怎么登录?这些安全登录邮箱的方法你要知道

    入职了大厂,给了个公司邮箱,不知如何登录.不用担心,我们公司用的TOM企业邮箱,入职时电脑上有入职指南告知了公司邮箱登录方法. 公司企业邮箱怎么登录? 公司企业邮箱一般有很多个账号,所有账号由管理员统 ...

最新文章

  1. ECCV 2020 Oral | 可逆图像缩放:完美恢复降采样后的高清图片
  2. springboot配置html资源路径,SpringBoot普通.html文件视图配置
  3. BZOJ1977: [BeiJing2010组队]次小生成树 Tree
  4. socket如何定义端口号才能避免和其他程序冲突?
  5. 我很明确自己未来的方向,计算机和经济外加管理
  6. 【瞎搞】 Codeforces Round 276 DIV 2 C.Bits
  7. android 编译sdk,android编译sdk
  8. 正充电手机自动订了总统套房!公安介入调查:排除被植入后门或被控制可能...
  9. PPT实现单页点名的方式
  10. 没想到 Python 中竟然还藏着这些稀奇古怪的东西...
  11. dnf服务器老是连接中断,《dnf》老是网络连接中断怎么办 网络总是中断解决办法...
  12. Grafana 在 Kubernetes 中的使用
  13. Vue,React,微信小程序,快应用,TS 和 Koa 一把梭
  14. 栅栏布局合并html,arcgis栅格数据合并 arcgis栅格图像拼接步骤
  15. Homekit智能家居DIY一智能插座
  16. (区块链溯源)基于Hyperledger Fabric 的农产品区块链溯源方法
  17. 2020-319 几种分类器评估与调优方法手写整理 37互娱笔试题
  18. 振动位移传感器IEPE加速度3轴采集模块
  19. Java编程思想第四版第六章习题
  20. 【飞行器】基于matlab GUI四旋飞行器模型【含Matlab源码 2075期】

热门文章

  1. C#NuGet包管理器
  2. 太卷了,年薪40W的软件测试大D佬工作经验分享,原来我存在这么多问题......
  3. GB18030转utf8
  4. 炮弹仿真系统matlab软件下载,基于Matlab/Simulink的导弹六自由度弹道仿真系统设计...
  5. 课堂/会议同屏教学解决方案之RTSP/RTP over UDP组播解决方案
  6. 当你的移动硬盘弄坏了你的文件该如何恢复呢
  7. xp系统无法从补丁服务器获取补丁,xp系统微软补丁获取
  8. 1990-2021年全国各省城市化水平数据
  9. 计算机维修技术答案,吉大《计算机维护与维修》显示篇练习答案
  10. java ascii 转中文_Java中文与ASCII码的转换