利用Python自动发送邮件

自动发送邮件

我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助Python来自动发送邮件。

使用邮箱的第一步

一般我们在使用QQ邮箱、163邮箱、126邮箱等这些比较常用的邮箱时,只需要输入账号和密码就可以。但是在使用手机端的企业邮箱的时候,一般都需要配置一下,常规的配置界面如下所示:

6zyR39.png

就是除了在输入账号密码以外,还需要输入一个服务器链接地址,这个地址每个公司都会不太一样。

一份邮件的组成

下图是outlook中发送一份邮件的界面,主要包含发件人、收件人、抄送人、主题、正文、附件这几部分。这也是一般邮件比较通用的组成部分。

6zyWcR.png

如何发送邮件

在发送邮件之前首先需要与服务器进行连接,在Python中主要利用smtplib模块来建立服务器连接接、服务器断开的工作。

不同邮箱的服务器链接地址不一样,大家根据自己使用的邮箱设置相应的服务器链接。下表为常见邮箱对应的服务器链接:

邮箱服务器地址
新浪邮箱smtp.sina.com
搜狐邮箱smtp.sohu.com
126邮箱smtp.126.com
139邮箱smtp.139.com
163网易邮箱smtp.163.com

在与163邮箱服务器进行连接之前,需要先登陆自己的163邮箱进行授权设置,授权码设置如下:

点击设置中的POP3/SMTP/IMAP,勾选SMTP服务,根据提是进行授权码设置,设置授权成功后,在Python中利用授权码进行登陆,而不是你本来的邮箱密码,如果使用本来的邮箱密码登陆,会报错。

连接设置好以后就可以使用账户密码进行登录了,登录成功以后就可以对邮件内容进行编辑,编辑完成以后就可以点击发送了,发送完成后断开服务器链接。

如下展示了发送一份邮件的简短流程代码:

import smtplibsmtp = smtplib.SMTP()
smtp.connect(host, port)  # 与服务器进行连接
smtp.set_debuglevel(1) #显示出交互信息
smtp.login(username, password)  # 登陆邮箱
smtp.sendmail(sender, receiver, msg.as_string())  # 发送邮件
smtp.quit()  # 断开连接

正式发送一份邮件

如下以163邮箱为例,展示了发送一份邮件完整的Python代码:

import smtplib
from email.mime.multipart import MIMEMultipart 
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
from email.mime.application import MIMEApplication#发件人邮箱
asender="zhangjunhongdata@163.com"
#收件人邮箱
areceiver="zhangjunhong@163.com"
#抄送人邮箱
acc = 'zhangjunhong@qq.com'
#邮件主题
asubject = '这是一份测试邮件'  #发件人地址
from_addr = "zhangjunhongdata@163.com"
#邮箱密码(授权码)
password="123data"#邮件设置
msg = MIMEMultipart()
msg['Subject'] = asubject  
msg['to'] = areceiver  
msg['Cc'] = acc 
msg['from'] =  "张俊红"#邮件正文
body = "你好,这是一份测试邮件"#添加邮件正文:
msg.attach(MIMEText(body, 'plain', 'utf-8'))#添加附件
#注意这里的文件路径是斜杠
xlsxpart = MIMEApplication(open('C:/Users/zhangjunhong/Desktop/这是附件.xlsx', 'rb').read())
xlsxpart.add_header('Content-Disposition', 'attachment', filename='这是附件.xlsx')
msg.attach(xlsxpart)    #设置邮箱服务器地址以及端口
smtp_server ="smtp.163.com"
server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1)#登陆邮箱
server.login(from_addr, password)#发送邮件
server.sendmail(from_addr, areceiver.split(',')+acc.split(','), msg.as_string())#断开服务器链接
server.quit()

最后的结果如下图:

关于自动发送邮件还有一些进阶的内容,比如定时发送,正文显示html内容等,大家有兴趣的可以自行上网搜索学习。

批量发送邮件

如果是需要同时发送多份邮件,可以把收件人整理成一个表格进行循环遍历,挨个进行发送。

比如我们现在需要给销售部门好几百销售人员分别发送本月各自的销售任务,在发送邮件的时候主题需要命名成xxx任务明细,在正文中的称呼也需要改成对应的收件人,附件中需要添加各自的任务明细表,而且需要抄送给各自的直属上级。

根据上述的需要,我们整理了如下收件人信息相关的表格df:

姓名收件人抄送人
张俊红1zhangjunhong11@163.comzhangjunhong@163.com
张俊红2zhangjunhong22@163.comzhangjunhong@163.com

只需要写一个for循环去遍历这个df表格中的信息,然后就可以分别发送出去,具体实现代码如下:

import smtplib
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplicationhost = "smtp.163.com"
port = 25
username = "zhangjunhong1227@163.com"
password = "123zjh"smtp = smtplib.SMTP() #声明一个链接对象
smtp.connect(host, port)  # 与服务器进行连接
smtp.set_debuglevel(1) #显示出交互信息
smtp.login(username, password)  # 登陆邮箱sender = usernamefor i in zip(df["姓名"],df["收件人"],df["抄送人"]):receiver = i[1] #收件人acc = i[2] #抄送人msg = MIMEMultipart() #声明一个邮件对象msg['from'] = username #发件人msg['to'] = receiver#收件人msg['Cc'] = acc #抄送人msg['Subject'] = i[0] + "任务明细" #主题# 编写正文text = MIMEText(i[0]+"您好,这是您这个月的任务明细",'plain', 'utf-8') msg.attach(text)# 添加表格附件f = open('C:/Users/zhangjunhong/Desktop/任务明细/'+ i[0] + '.xlsx', 'rb').read()filepart = MIMEApplication(f)filepart.add_header('Content-Disposition','attachment',filename=i[0] + '任务明细.xlsx') #为附件添加一个标题msg.attach(filepart)smtp.sendmail(sender, receiver.split(',') + acc.split(','), msg.as_string())  # 发送邮件
smtp.quit()  # 断开连接    

通过运行上面的代码,就可以达到一次性给表格df中的所有人发送邮件的需求。

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

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

相关文章

Python实现自动写邮件

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

day06 代码实现邮件自动发送

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

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

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

python自动发送邮件实现

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

VBA使用Outlook自动发送邮件

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

Python实现自动发送邮件

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

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

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

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

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

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

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

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

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

论文学习——VideoGPT

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

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

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

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

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

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

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

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

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

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

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

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

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

理解Window和WindowManager(一)

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

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

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

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

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