Python实现自动写邮件

Python实现自动写邮件

上星期接到任务要完成一个自动写邮件的脚本,基本功能是每两小时执行一次程序跑出统计表格,并将统计表格的summary发送到领导的邮箱。由于公司是做数字货币的,每两小时实时监测策略交易情况较为必要。下面来实现自动写邮件的功能部分

准备工作

本文将以腾讯企业邮箱为例,利用python编写自动写邮件程序。将用到以下库和模块,其中pandas用来演示用邮件利用html语言发送数据框:

import smtplib
from email.mime.text import MIMEText
from email import encoders
from email.mime.multipart import MIMEMultipart
from email.utils import formataddr
import pandas as pd

要使用smtp服务,需要登陆邮箱并进行设置。登陆邮箱后在设置-客户端设置-开启SMTP服务。
这里写图片描述
发送邮件通常有发件人(名字),收件人(名字),标题,正文,图片,附件。下面将演示如何一步步发送带图片,附件的邮件。

初始化

首先在函数里定义发件人收件人,标题。其中若收件人为多人,需要注意一下,初始定义为以’,’或’;’连接的字符串,而在sendmail函数里需要利用split进行分割传入一个列表参数,具体见代码

def mail():sender = 'XXXXXX@163.com'  #发件人password = 'XXX'  #密码receiver = 'XXXX@qq.com,YYYY@163.com'  #多个收件人subject = '测试邮件'  #标题msg = MIMEMultipart('mixed') #初始化定义,mixed为含多种功能的邮件msg['From'] = sendermsg['To'] = receivermsg['Subject'] = subject

下面我们通过定义添加附件的函数,添加正文的函数,添加图片的函数来完善功能,只需将msg作为参数传入即可

添加正文

添加正文有两种方式,一种是通过html语言,一种是直接传入字符串。而作为监控邮件,通常需要看的是一张表格中的数据,这时利用html调整格式较为美观且方便。这里将演示读入数据框df后如何发送

def create_df():'''随意定义一个数据框作测试,此函数可更改为pd.read_csv来读取想要发送的数据'''df = pd.DataFrame({'a':[1,2,3,4],'b':[2,3,4,5]})return dfdef attach_text(msg):df = create_df()col = df.columnsd = ''for i in range(df.shape[0]):d = d + """<tr><td width="80">""" + str(df.iloc[i][0]) + """</td><td width="80">""" + str(df.iloc[i][1]) + """</td></tr>"""html = """/<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><body><div id="container"><strong>测试表格:<div id="content"><table width="30%" border="2" bordercolor="black" cellspacing="0" cellpadding="0"><tr><td width="80"><strong>a</strong></td><td width="80"><strong>b</strong></td></tr> + d + """</table></div></div></div></body></html>"""%(df.columnscontext = MIMEText(html,_subtype='html', _charset='utf-8')msg.attach(context)print('添加正文表格完成')

添加附件

def attach_enclosure(msg):file = 'C:/Users/19470/Desktop/test.xlsx' #发送附件的文件路径attach = MIMEText(open(file, 'rb').read(), 'base64', 'utf-8')attach['Content-type'] = 'application/octet-stream'attach_name = "attachment;filename='test_enclosure'"attach['Content-Disposition'] = attach_namemsg.attach(attach)print('添加附件完成')

添加图片

要把图片嵌入到邮件正文中,我们只需按照发送附件的方式,先把邮件作为附件添加进去,然后,在HTML中通过引用src=”cid:0”就可以把附件作为图片嵌入了。如果有多个图片,给它们依次编号,然后引用不同的cid:x即可。
这里不再演示。

最后步骤

假设我们需要发送包含附件,图片以及正文的邮件,在mail函数中完善为一下代码

def mail():sender = 'XXXXXX@163.com'  #发件人password = 'XXX'  #密码receiver = 'XXXX@qq.com,YYYY@163.com'  #多个收件人subject = '测试邮件'  #标题msg = MIMEMultipart('mixed') #初始化定义,mixed为含多种功能的邮件msg['From'] = sendermsg['To'] = receivermsg['Subject'] = subjectmsg = MIMEMultipart('mixed')attach_enclosure(msg) #添加附件attach_text(msg) #添加正文smtp = smtplib.SMTP() #建立smtp对象smtp.connect('smtp.exmail.qq.com') #可在邮箱客户端查看,smtp服务地址smtp.set_debuglevel(1) #输出程序执行logsmtp.login(sender, password) #登陆smtp.sendmail(sender, receiver.split(','), msg.as_string()) #发送邮件,需要将收件人split成列表print('%s 发送成功'%subject)smtp.quit()

总结

最后效果如图
这里写图片描述

自动发邮件在监控系统运营情况时较为有效,通过datetime模块设置自动发邮件的时间,再定时执行相关文件输出表格,最后再发送邮件,可以在非上班时间实时监测系统运营情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/45572.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day06 代码实现邮件自动发送

目录 一. 邮件发送基本流程二. 添加文件附件三. 发送富文本四. 发送图片五. 认识前端HTML ————————— 获取邮箱授权码————————— 一. 邮件发送基本流程 生活中发送邮件的步骤&#xff1a; 注册邮箱信息 —> 打开登录邮箱的网址 —> 输入账号密码完成登录…

Python实现自动发送邮件 - 自动抓取Blog中留言的邮箱并发送邮件

Python实现自动发送邮件 - 自动抓取博客/网站中留言的邮箱并发送邮件 背景脚本要解决的问题&#xff1a;实现方法代码及解析1. AutoSendEmailByBlogComments.py2. FileOperation.py3. SendEmail.py 备注&#xff1a;邮箱SMTP设置其它好玩的Python脚本 博主热门文章推荐&#xf…

python自动发送邮件实现

目录 1 前言2 准备工作2.1 电子邮件的基础知识。2.2 python邮件库2.3 邮箱设置 3 python实现邮件自动发送3.1 SMTP()和send()方法介绍3.2 python实现实例 参考信息 1 前言 python功能强大&#xff0c;可以实现我们日常办公的很多任务。诸如批量处理word,excel,pdf等等文件&…

VBA使用Outlook自动发送邮件

↓↓↓欢迎关注我的公众号&#xff0c;在这里有数据相关技术经验的优质原创文章↓↓↓ 基础版本–能自动发送就是成功 利用VBA使用Outlook自动发送邮件&#xff0c;代码及注释如下&#xff1a; Sub send_mail()Dim ObjOL As Object Dim itmNewMail As Outlook.MailItem Dim…

Python实现自动发送邮件

最近比较闲的慌&#xff0c;在自己学习Python爬虫&#xff0c;学到了用Python发送邮件&#xff0c;觉得这个可能以后比较实用。以下项目用QQ邮箱为例。 需要用到的模块&#xff1a; smtplib&#xff0c;email 提醒&#xff01;QQ 邮箱一般默认关闭SMTP服务&#xff0c;我们得…

chatgpt赋能python:Python写模拟器脚本

Python写模拟器脚本 Python是一种强大的编程语言&#xff0c;适用于各种任务&#xff0c;包括模拟器编写。模拟器是一种软件程序&#xff0c;能够模拟硬件或软件系统的行为。这篇文章将介绍Python编写模拟器脚本时需要关注的一些关键点。 为什么选择Python编写模拟器脚本 Py…

chatgpt赋能python:Python在线模拟器:让编程变得更加轻松

Python 在线模拟器&#xff1a;让编程变得更加轻松 介绍 Python 在线模拟器是一个非常实用的工具&#xff0c;它可以帮助用户直接在浏览器中测试和运行 Python 代码。在线模拟器的出现简化了编程过程&#xff0c;不需要安装 Python IDE 等软件&#xff0c;只需要有一台连接互…

老子简介(函谷关道德经)

老子简介 老子(约前580~前500年之后)&#xff0c;姓李名耳。字聃&#xff0c;春秋时期楚国人&#xff0c;道家学派创始人。曾在东周国都洛邑(今河南洛阳)任守藏史(相当于国家图书馆馆长)。他博学多才&#xff0c;晚年乘青牛西去&#xff0c;在函谷关前写成《道德经》。 老子主…

【天天读书】《道德经》第十六章

《道德经》第十六章 [原文] 致虚极,守静笃①; 万物并作②,吾以观复③。 夫物芸芸④,各复归其根。 归根⑤曰静,静曰⑥复命⑦。 复命曰常⑧,知常曰明⑨。 不知常,妄作凶。 知常容⑩,容乃公, 公乃全⑾,全乃天⑿, 天乃道,道乃久, 没身不殆。 [译文] 尽力…

论文学习——VideoGPT

论文学习——VideoGPT: Video Generation using VQ-VAE and Transformers 原文链接&#xff1a;https://arxiv.org/abs/2104.10157 1. 设计思路 不同种类的生成模型在一下多个维度各有权衡&#xff1a;采样速度、样本多样性、样本质量、优化稳定性、计算需求、评估难易程度等…

拥抱变化 | SAM发布后,大模型时代的算法研发如何发展?

作者 | 刀刀宁 编辑 | 汽车人 原文链接&#xff1a;https://zhuanlan.zhihu.com/p/619797754 点击下方卡片&#xff0c;关注“自动驾驶之心”公众号 ADAS巨卷干货&#xff0c;即可获取 点击进入→自动驾驶之心【AIGC】技术交流群 大模型时代&#xff0c;是危机时代。 但危机&a…

【Midjourney实操】逼真到颤抖!保姆级教程教生成效果炸裂的图片

最近&#xff0c;许多由Midjourney V5创作的画作在网络上引起了热议&#xff0c;许多人惊呼&#xff1a;人类画师&#xff0c; 插画师&#xff0c; 设计师统统活不下去了&#xff01; 比如下面这张中国情侣的画作&#xff1a; 因为前段时间这个很火&#xff0c; 我跟着同样的p…

DDR5市场迎来拐点 Rambus再次先发制人

在数字化时代&#xff0c;行业用户对于算力的追求是无止境的。除了像CPU这样的核心部件以外&#xff0c;内存的容量与带宽也是提升算力不可忽视的重要一环。近日&#xff0c;Rambus率先推出6400MT/s DDR5寄存时钟驱动器&#xff0c;旨在进一步提升服务器内存性能。 算力驱动创新…

高质量WordPress下载站模板5play主题源码

介绍&#xff1a; 5play下载站是由国外站长开发的一款WordPress主题&#xff0c;主题简约大方&#xff0c;为v1.8版本&#xff0c; 该主题模板中包含了上千个应用&#xff0c;登录后台以后只需要简单的三个步骤就可以轻松发布apk文章&#xff0c; 我们只需要在WordPress后台…

当月薪3000变成万元进账,ChatGPT成就前女友视野中的闪耀新星

在生活的曲折丛林中&#xff0c;每个人都渴望抓住那一抹光明。突然&#xff0c;你发现了一个隐藏的秘密武器&#xff0c;它能让你趟过迷雾&#xff0c;瞥见成功的彼岸。ChatGPT&#xff0c;这个神秘的力量&#xff0c;将领导你跃过层层障碍&#xff0c;找到属于你的辉煌篇章。马…

【前端】vue学习5 : vue + ElementUI

vueelementUI 项目搭建 命令行需要管理员权限。 根据之前创建vue-cli项目一样再来一遍 创建项目。 1、创建一个名为 hello-vue 的工程 vue init webpack vue-element D:\IdeaProjects\vue>vue init webpack vue-element ‘git’ &#xfffd;&#xfffd;&#xfffd;&…

理解Window和WindowManager(一)

理解Window和WindowManager(一) Window是一个抽象类,它的具体实现是PhoneWindow,创建一个WindowManager就可以创建一个Window&#xff0c; Window的具体实现位于WindowManagerService中,WindowManager和WindowManagerService是一个IPC过程 为什么使用Window 首先就是Window…

最牛最全的 Postman 实现 API 自动化测试教程

【 文章末尾给大家留下了大量的福利】 背景介绍 相信大部分开发人员和测试人员对 postman 都十分熟悉&#xff0c;对于开发人员和测试人员而言&#xff0c;使用 postman 来编写和保存测试用例会是一种比较方便和熟悉的方式。但 postman 本身是一个图形化软件&#xff0c;相对较…

Python自动化办公文章,开放下载共97页PDF

发现很多读者对python自动化办公&#xff08;python操作Excel、Word、PDF、PPT&#xff09;的文章都很喜欢&#xff0c;并希望能够应用到工作中去。 因此&#xff0c;我直接写了一个文档《python自动化办公系列文章》供大家学习参考&#xff0c;已经整理成册(如下图所示)&…

RPA、低代码、流程挖掘纷纷引入生成式AI,超自动化迎来LLM时代

3月7日&#xff0c;有个名为Kognitos智能RPA厂商拿到了675万美元融资&#xff0c;自送绰号“生成式AI自动化”先驱。其主要业务&#xff0c;是提供类似ChatGPT的对话式功能&#xff0c;为客户提供更人性化的智能自动化服务。 对于Kognitos的绰号&#xff0c;业内人士看后呵呵一…