数据分析师不加班的秘密,三行代码教你Python自动发送邮件

作为一名数据分析师,每天除了做数据日报,还要编写邮件正文和添加数据日报附件,发送给对应的负责人及销售个人,一般一封邮件应包含邮箱账户名、邮箱密码、发送人邮箱、邮件主题以及邮件正文。

本文借助Python工具,使用yagmail和zmail库的自动发邮件功能,逐一介绍这两个库的参数方法,并增加两个实际案例,教你如何使用QQ邮箱自动发邮件,其他邮箱发送方法类似,下面一起学习。

示例工具:anconda3.7
本文讲解内容:yagmail、zmail库的使用
适用范围:Python自动发送邮件

yagmail库

由于yagmail是第三方模块,在使用前先进行安装,如下代码,分别设置相关的邮箱参数,3行代码就可以将邮件发送出去。

import yagmail
#创建yagmail.SMTP实例
yag=yagmail.SMTP(user='xxx@163.com',password='password',host='smtp.163.com')#SMTP服务器域名
#发送邮件
yag.send(to='xx1@qq.com',subject='测试',contents='数据请查收!')

多人发送邮件,只需指定send()中的to参数为列表即可。

#给多人发送邮件
yag.send(to=['xx1@qq.com','xx2@qq.com'],subject='测试',contents='数据请查收!')

发送带附件的邮件,在send()函数中设置attachments参数即可,发送多个附件,指定attachments参数为一个列表即可。

#添加附件
yag.send(to=['xx1@qq.com','xx2@qq.com'],subject='测试',contents='数据请查收!',attachments=['a.jpg','b.png','c.xlsx'])

抄送和密送邮件,在send()函数中指定参数cc和bcc即可,其中,cc是Carbon Copy的简称,表示抄送,bcc是Blind Carbon Copy的简称,表示密送。

#抄送和密送
yag.send(to=['xx1@qq.com','xx2@qq.com'],cc='xxx1@126.com',#抄送bcc='xxx2@outlook.com',#密送subject='测试',contents='数据请查收!',attachments=['a.jpg','b.png','c.xlsx'])

使用发送邮件的邮箱需要开启SMTP服务,以qq邮箱为例开启SMTP,首先登陆qq邮箱平台,点击qq邮箱设置进入账户设置,将POP3/STMP和IMAP/SMTP开启。

按照要求回复短信内容,即可获得邮箱生成的十六位秘钥。

当qq邮箱作为发送方时,zmail.server第二个参数是开启IMAP/SMTP的十六位秘钥而不是密码,使用密码会报错,而使用其他邮箱作为发送方时使用密码发送成功。

下面使用一个具体的案例进行介绍,使用用户名及QQ邮箱生成的秘钥,设置收件人邮箱,邮件主题、邮件正文及添加附件即可发送成功。

import time
start=time.time()
import yagmail#创建yagmail.SMTP实例
yag=yagmail.SMTP(user='27******3@qq.com',password='fa********g',host='smtp.qq.com')#给多人发送邮件
yag.send(to=['27******3@qq.com ','37****484@qq.com'],subject='WK15数据日报',contents='数据日报,请查收!',attachments=['C:/Users/尚天强/Desktop/大话数据分析.Png','C:/Users/尚天强/Desktop/数据日报.xlsx','C:/Users/尚天强/Desktop/销售日报.html'])end=time.time()
print('邮件已发送发送成功,共计耗时{:.2f}秒'.format(end-start))

邮件已发送发送成功,共计耗时2.86秒,如下即为邮件发送成功的截图。

zmail库

同样,zmail是第三方模块,需要在命令行自行安装,使用zmail发送纯文本邮件,多个接收人可用列表。

import zmail
#邮件内容
mail_content={'subject':'WK15数据日报',#邮件标题'content_text':'数据日报,请查收!'}#邮件正文server=zmail.server('xxxxxx@qq.com','password') #使用邮件账户名和密码登录服务器#发送邮件,如果有多个收件人,则用列表[xxx1@163.com,xxx2@163.com]形式
server.send_mail('xxxxx@163.com',mail_content)

使用zmail发送带附件邮件。发送多个附件,指定attachments参数为一个列表。

#邮件内容
mail_content={'subject':'daily report',#邮件标题'content_text':'数据日报,请查收!',#邮件正文'attachments':['./a.png','./daily.x1sx']}#添加附件

zmail自动发邮件同样简单,先初始化邮件内容,然后使用账号密码模拟登录自己的邮箱,最后设置接收邮箱地址即可发送成功。

import time
start=time.time()
import zmail
#邮件内容
mail_content={'subject':'WK15数据日报',#邮件标题'content_text':'数据日报,请查收!',#邮件正文'attachments':['C:/Users/尚天强/Desktop/大话数据分析.Png','C:/Users/尚天强/Desktop/数据日报.xlsx','C:/Users/尚天强/Desktop/销售日报.html']}#添加附件#登录操作,使用邮件账户名和密码登录服务器
server=zmail.server('27******83@qq.com','fa********ceg')
#执行登录邮箱并发送邮件内容,如果有多个收件人,则用列表[xxx1@163.com,xxx2@163.com]形式
server.send_mail(['27*****83@qq.com','25*****484@qq.com'],mail_content)end=time.time()
print('邮件已发送发送成功,共计耗时{:.2f}秒'.format(end-start))

邮件已发送发送成功,共计耗时1.84秒。

以上就是Python自动发邮件的内容,代码稍加修改即可运行成功,亲测有效,更多实用的好玩的Python办公自动化的内容,可以关注我,持续分享办公自动化内容。

本文首发于公众号:大话数据分析,三年互联网数据分析经验,擅长Excel、SQL、Python、PowerBI数据处理工具,数据可视化、商业数据分析技能,统计学、机器学习知识,持续创作数据分析内容,点赞关注,不迷路。

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

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

相关文章

MyBatis框架基础到进阶

1、为什么要学习MyBatis 如果没有MyBatis框架,我们依靠JDBC和连接池已经能够很好的和数据库进行交互了,而学习MyBatis框架最核心的原因是为了减少SQL语句对代码的侵入性。 因为在过往不管是使用连接池还是JDBC Templete,所有的SQL语句都写在代…

java.sql.SQLException: Failed to fetch schema of XXX 问题

遇到问题:java.sql.SQLException: Failed to fetch schema of pay_record表 i.s.r.d.s.s.c.AbstractTableMetaCache : get table meta of the table pay_record error: Failed to fetch schema of pay_record 原因分析: springcloud项目中使用了se…

上海亚商投顾:沪指冲高回落 旅游板块全天强势

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日冲高回落,创业板指跌近1%,北证50指数跌超3%。旅游、零售板块全天强势&#xf…

python类继承之__init__函数覆盖问题

目录 1.问题描述 2.代码演示 3.总结 在Python这个广受欢迎的编程语言中,类继承是一项强大而精巧的特性。通过类继承,我们可以构建出更加灵活、可重用和易维护的代码,同时实现代码的模块化和扩展性。 但是如果对于熟悉C和java的人而言&…

R语言学习 case2:人口金字塔图

step1&#xff1a;导入库 library(ggplot2) library(ggpol) library(dplyr)step2&#xff1a;读取数据 data <- readxl::read_xlsx("data_new.xlsx", sheet 1) datareadxl::read_xlsx() 是 readxl 包中的函数&#xff0c;用于读取Excel文件。 step3&#xff1…

ckman:非常好用的ClickHouse可视化集群运维工具

概述 什么是ckman ckman&#xff0c;全称是ClickHouse Management Console&#xff0c; 即ClickHouse管理平台。它是由擎创科技数据库团队主导研发的一款用来管理和监控ClickHouse集群的可视化运维工具。目前该工具已在github上开源&#xff0c;开源地址为&#xff1a;github…

全网最详细丨2024年AMC8真题及答案来了

目录 前言 真题回忆 真题解析 结尾 前言 相信大家都已经知道今年AMC8出事情了吧&#xff0c;但最重要的还是要从中学到新知识。 听说今年考生被提前12分钟强制交卷了&#xff0c;肯定因为试题泄露了。 最新回复&#xff1a;我们这边已经退费了 真题回忆 需要word文档的请…

快速幂 算法

暴力算法 我们可以采用暴力算法 #include<bits/stdc.h> using namespace std; #define ll long long int main() {ll a, b, c;cin >> a >> b >> c;ll ans 1;for (ll i 1; i < b; i) {ans * a;}ans % c;cout << ans; } 不过这样肯定会超时…

计算机网络基础概念解释

1. 什么是网络 随着时代的发展&#xff0c;越来越需要计算机之间互相通信&#xff0c;共享软件和数据&#xff0c;即以多个计算机协同⼯作来完成业务&#xff0c;于是有了网络互连。 网络互连&#xff1a;将多台计算机连接在⼀起&#xff0c;完成数据共享。 数据共享本质是网络…

「 网络安全常用术语解读 」杀链Kill Chain详解

1. 简介 早在2009年&#xff0c;Lockheed Martin公司就提出了杀链(Kill Chain)理论&#xff0c;现在也称之为攻击者杀链(Attacker Kill Chain)。杀链其实就是攻击者进行网络攻击时所采取的步骤。杀链模型包括7个步骤&#xff1a;1侦察 -> 2武器化 -> 3交付 -> 4利用 …

不要长期把焦点放在让你烦恼的事情上

不要长期把焦点放在让你烦恼的事情上 在快节奏的生活中&#xff0c;我们经常会遇到各种各样让我们担心的事情。这些事情可能是工作上的压力&#xff0c;家庭中的矛盾&#xff0c;或者是个人的迷茫和困惑。然而&#xff0c;长期将焦点放在这些让我们烦恼的事情上&#xff0c;不…

PrestaShop购物系统 SQL注入漏洞复现(CVE-2023-30150)

0x01 产品简介 PrestaShop 是一个功能丰富,基于 PHP5 开发的 Web2.0 网上购物系统。PrestaShop 具有可定制,稳定等特点。整个系统只有 5.8MB,易于快速安装。 0x02 漏洞概述 PrestaShop 的部分主题中使用Leo Custom Ajax模块拓展,Leo Custom Ajax模块中可以在/modules/le…

JNPF低代码开发平台

一、关于低代码 JNPF平台在提供无代码&#xff08;可视化建模&#xff09;和低代码&#xff08;高度可扩展的集成工具以支持跨功能团队协同工作&#xff09;开发工具上是独一无二的。支持简单、快速地构建及不断改进Web端应用程序&#xff0c;可为整个应用程序的生命周期提供全…

HarmonyOS鸿蒙学习基础篇 - 项目目录和文件介绍

├── hvigor //存储购置信息的文件&#xff0c;主要用于发布打包 ├── idea //开发工具相关配置可忽略 ├── AppScope //工程目录 全局公共资源存放路径 │ └── resources │ │ └── base │ │ │ └── element //常亮存放 │ │ │ …

beego项目部署与热更新

1.开发自己的第一个项目 这里我引用的是在线聊天室&#xff0c;参考源码是https://github.com/beego/samples/tree/master/WebIM 在源码的基础上重新开发&#xff0c;整理项目发布到了liu289747235/WebIM 推荐下载源码&#xff1a;https://gitee.com/myselfyou/web-im 在线…

游戏开发中的噪声算法

一、噪声 噪声是游戏编程的常见技术&#xff0c;广泛应用于地形生成&#xff0c;图形学等多方面。 那么为什么要引入噪声这个概念呢&#xff1f;在程序中&#xff0c;我们经常使用直接使用最简单的rand()生成随机值&#xff0c;但它的问题在于生成的随机值太“随机”了&#xf…

爬虫之牛刀小试(八):爬取微博评论

今天爬取的是微博评论。 可以发现其特点是下一页评论的max_id在上一页中。 于是代码如下&#xff1a; import requests import json import re import time headers {User-Agent: ,"Cookie": "","Referer": "https://m.weibo.cn/detail/4…

【想要安利给所有人的开发工具】最强工具ChatGPT——分享一些使用经验

目录 &#x1f525;个人使用ChatGPT的经验 &#x1f525;如何使用ChatGPT 方法一 方法二 &#x1f525;&#x1f525;提问技巧分享 1、英语翻译员 2、面试官 3、javascript 控制台 4、Excel表格 5、作曲家 6、辩手 7、小说家 8、诗人 9、数学老师 10、网络安全…

2023江苏职教高考计算机技能考试--填空题解析

/*--------------- 【程序填空】 ----------------- 题目&#xff1a;验证任意一个大于1的正整数都可以找到 一串连续奇数&#xff0c;它们的和等于该整数的立方。 例如&#xff1a;4的立方等于64&#xff0c;6413579111315程序运行结果如下&#xff1a;3的立方等于27&#xff…

linux磁盘,分区,挂载等等

1. 修改磁盘分区的标签 例如&#xff1a;733be18b-7baf-d84c-879d-ca3db465f179太长了&#xff0c;修改一下。 linuxchenxiao:/media/linux/733be18b-7baf-d84c-879d-ca3db465f179$ 先 sudo blkid sudo blkid 找到你想修改的UUID(唯一标识符) /dev/sda1: UUID"733be…