用Python发送电子邮件?这也太丝滑了吧(21)

小朋友们好,大朋友们好!

我是猫妹,一名爱上Python编程的小学生。

欢迎和猫妹一起,趣味学Python。

今日主题

猫爸赚钱养家,细想起来真的不容易啊!

起早贪黑,都是6点早起做早饭,送我到学校后,匆匆忙忙去上班,下班忙起来时也不得不披星戴月。

有句话咋说的?

起得比鸡早,睡得比狗晚。

世人慌慌张张,不过图碎银几两,偏偏这碎银几两,能解世间惆怅。

可让父母晚年安康,呵护幼子成长入学堂。

他的工资条长这样:

猫爸自己也常常纳闷,工资条是通过邮件发送的,里面有文字和图片。

如果不小心发错怎么办?

比如把张三的工资条贴到了李四的邮件里。

这应该是程序实现的发送邮件吧?

我猜是,你呢?

咱们今天的主题就是如何用Python发送邮件,完全可以实现类似效果。

电子邮件email

电子邮件又叫email,它是一种用电子手段提供信息交换的通信方式。

通过网络的电子邮件系统,用户可以以非常低廉的价格(不管发送到哪里,都只需负担网费)、非常快速的方式(几秒钟之内可以发送到世界上任何指定的目的地),与世界上任何一个角落的网络用户联系。

电子邮件可以是文字、图像、声音等多种形式。

同时,用户可以得到大量免费的新闻、专题邮件,并轻松实现轻松的信息搜索。

咱们今天实现以下三个功能:

  • 发送纯文本格式邮件

  • 发送HTML格式邮件

  • 发送带附件的邮件

在学习之前,需要准备两个邮箱。

这两个电子邮箱,不要属于同一家邮件服务商。

比如(和猫妹学Python)准备一个QQ邮箱、一个163邮箱。

163邮箱设置

对于163电子邮箱,需要设置客户端授权密码,不然邮件会发送失败。

具体看以下截图,如果版本有差异,操作方式也是类似的。

开启IMAP/SMTP服务

开启POP3/SMTP服务

什么是SMTP

SMTP,Simple Mail Transfer Protocol,简单邮件传输协议,一种提供可靠且有效的电子邮件传输的协议。

SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。

我们不需要了解SMTP具体实现,只要会使用它就可以了。

毕竟,我们目标不是开发一套电子邮件系统,而是如果用Python来发送邮件。

smtplib

Python之所以强大,之所以被称为胶水语言。

就是因为它有许多现成的模块,可以拿来就用,简单,高效。

Python提供了smtplib模块,可以用它来发邮件。

一般需要四个步骤:

  1. 连接服务器

  2. 登录服务器

  3. 发送邮件

  4. 退出服务器

第1步

smtplib.SMTP创建一个SMTP对象。

host是服务器主机IP或域名,port是端口号。

每个公司的邮件服务商和端口号都可以不同,可以在网上查询下。

smtplib.SMTP可以用smtplib.SMTP_SSL替换。

smtplib.SMTP,非SSL端口,不加密。

smtplib.SMTP_SSL,SSL端口,加密。

建议使用smtplib.SMTP_SSL,更加安全。

smtp.ehlo()表示向服务器进行反馈,反馈成功后就表示可以登录服务器了。

第2步

登录服务器

smtp.login(sender, pwd)

sender就是登录邮箱名

pwd就是密码

第3步

发送邮件

smtp.sendmail(sender, receiver, message)

sender表示发送者的邮箱

receiver表示接收者的邮箱

message邮件内容

第4步

退出服务器

smtp.quit()

发送纯文本格式邮件

代码和效果如下图:

1~3:导入smtplib模块,并引入MIMEText和Header。

这两个类是用来构建邮件内容的。

它们都属于email模块。

要想用Python发邮件,需要用到stmplib模块和email模块。

stmplib用来发送邮件。

email用来构建邮件内容。

6~7:输入邮箱账户名和密码,这里的密码不是邮件的密码,而是授权密码,当在设置smtp时会看到。

10:接收邮件的邮箱地址,它是列表,如果同时发送多个人,这里可以多设置几个地址。

11~14:填充邮件内容。

MIMEText一共有三个参数:

  • 邮件正文,如果内容较多,可以多行。

  • 邮件类型,plain表示纯文本。

  • 邮件编码,一般是utf-8。

17~24:采用try except实现异常处理,如果有报错,网上搜索下原因。

发送HTML格式邮件

万事开头难,有了发送纯文本邮件的经验。

再发送HTML格式邮件,就简单多了。

格式:

message=MIMEText("正文内容","html","utf-8")

发送带附件的邮件

如果想要在邮件中添加附件怎么办?

带附件的邮=邮件正文+各个附件

邮件正文使用的是MIMEText,附件呢?

一般使用的是MIMEApplication对象,然后再使用一个MIMEMultipart对象把两个对象包含进去就可以了。

MIMEMultipart=MIMEText+MIMEApplication

还记得我们之前学习的文件操作吗?

文件分为文本文件和二进制文件。

那么附件有没有类型呢?

有的,也分为文本类型和其他类型。

文本类型附件语法

message=MIMEMultipart()实例化一个MIMEMultipart对象。

MIMEText()实例化一个MIMEText对象,三个参数含义为读取文件内容、网络传输编码方式、unicode编码方式。

open这句代码表示打开文件并读取文件,rb表示二进制模式打开一个只读文件。

它等同于下面两句代码:

file=open(r"文件路径","rb")

txt=file.read()

atta["Content-Tpye"]和atta["Content-Disposition"]是固定的,暂时不需要关心其具体含义。

只需要知道,这两句代码等同于如下:

atta.add_header("Content-Type", "application/octet-stream")

atta.add_header("Content-Disposition", "attachment; filename='文件名'")

message.attach(atta)表示把上述附件添加到邮件附件中。

如果附件中有中文,可能有乱码。

atta.add_header("Content-Disposition", "attachment", filename=("test"))

可以改为

atta.add_header("Content-Disposition", "attachment", filename=("gbk","","test"))

文本类型附件语法

当附件为其他类型(如pdf、xlsx、zip、mp3等)时,我们需要用到email模块的两个类:MIMEMultipart类和MIMEApplication类。

语法:

MIMEApplication用于实例化一个MIMEApplication对象,有一个参数,用于读取文件内容。

atta.add_header()表示调用MIMEApplication对象的add_header方法。

最后,使用MIMEMultipart对象的attach将附件添加到MIMEApplication对象中。

为什么用编程方式发送邮件

如果要发100封邮件怎么办?

编程可以批量、高效,你觉得呢?

好了,我们今天就学到这里吧!

如果遇到什么问题,咱们多多交流,共同解决。

我是猫妹,咱们下次见!

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

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

相关文章

邮件群发-不仅仅是自己想的那么简单(HTTP发送)

不管是工厂还是外贸公司,或者是SOHO,利用“伪EDM邮件营销”都可以用最小的代价,来获取询盘和订单。 而“伪EDM邮件营销”的核心技术,则是“裙发邮件”。 裙发邮件的作用:以最高效的方式把邮件推送给客户,增…

Anthropic对ChatGPT产品Claude发布,可以对外体验(目前并不支持中文)

Claude是下一代人工智能助手,基于 Anthropic 对训练有用、诚实和无害的人工智能系统的研究。Claude 可通过我们的开发人员控制台中的聊天界面和 API 进行访问,能够执行各种对话和文本处理任务,同时保持高度的可靠性和可预测性。 克劳德可以帮…

落地为王,「大模型」走出发布会

©️深响原创 作者|吴鸿键 大模型,大机遇。舆论喧嚣了几个月,有能力的企业都在抢占生态位。 芯片层,英伟达凭借其GPU优势,成为ChatGPT热潮中最先赚到钱的人,博通、微软、谷歌也都紧盯着芯片机遇&#…

Python 给视频添加背景音乐 | Python工具

目录 前言 环境依赖 代码 总结 前言 本文提供给视频添加背景音乐的python工具,一如既往的实用主义。 环境依赖 ffmpeg环境安装,可以参考我的另一篇文章:windows ffmpeg安装部署_阿良的博客-CSDN博客 本文主要使用到的不是ffmpeg&#x…

微信对话生成器,生成微信聊天记录,聊天记录生成器,制作微信聊天记录,可生成文字、语音、转账、红包,朋友圈装X神器~

软件使用方法 解压压缩包,得到一个文件夹,内容如下 双击【wechat.exe】运行,可以看到程序有两个子菜单,每一个菜单都能对聊天界面进行部分设置 我们进入【对话设置】子菜单,这里可以设置聊天对象的头像,…

AI绘画火爆,以昆仑万维AIGC为例,揭秘AI绘画背后的模型算法

AI绘画火爆,以昆仑万维AIGC为例,揭秘AI绘画背后的模型算法 一、前言 最近AI绘画让人工智能再次走进大众视野。在人工智能发展早起,一直认为人工智能能实现的功能非常有限。通常都是些死板的东西,像是下棋、问答之类的&#xff0…

【zabbix】企业微信告警

本篇基于我的前两章环境续写: 1、【zabbix】docker安装zabbix、yum安装zabbix-agent 2、【zabbix】MySQL模板创建与监控 企业微信部分 一、首先得有个企业微信号 添加部门 应用管理创建应用 我的企业里面找到企业id,和上面两条一起,总共三…

服务器请求微信后台(api.weixin.qq.com)过慢处理

问题描述:服务器请求微信后台(api.weixin.qq.com)的测试结果,每次请求都需要4,5秒甚至更慢。 2016.12.16 16:31:57 start:1481877117.4148 request:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_t…

转行退路?后端开发人员可选12个职业方向

部分数据来源:ChatGPT 引言 后端开发是当前互联网行业非常热门的职业之一,如果你想要开启全新的职业生涯,也可以选择其他的职业。本文将介绍一些适合后端开发人员转行的就业方向,并从就业市场和就业前景角度进行分析。 1. 区块链…

云炬Android开发笔记 7登陆注册功能开发

阅读目录1.注册UI及验证逻辑实现 1.1 布局 1.2 注册信息的验证和逻辑 2.登录UI及验证逻辑实现 2.1 布局 2.2 登录的逻辑框架 3.服务器数据简单介绍 3.1 服务器的数据 3.2 数据端访问的数据 3.3 打印信息的级别类封装 4.与基于GreenDao的数据库框架设计 4.1 添加依赖和配置 …

让 GPT-4 设计一个分布式缓存系统,它从尝试到被“逼疯”!

整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 比 ChatGPT 背后 GPT-3.5 更为强大的模型 GPT-4,已在上周正式对外发布。在 OpenAI 官方发布的 GPT-4 Developer Livestream(https://www.youtube.com/watch?voutcGtbnMuQ&#…

增强型语言模型——走向通用智能的道路?!?

增强型语言模型——走向通用智能的道路?!? FesianXu 20230325 at Baidu Search Team 前言 继AlphaGo在2016年横扫了人类棋手之后,2022年末的chatGPT横空出世,再次引爆了全球对人工智能技术的热情。基于语言模型的chat…

新版nonebot,go-cqhttp搭建qq机器人保姆级教程

前言 前段时间QQ进行了更新,所以导致了非手表协议扫码登陆报错的问题,不过好在大佬已经推出rc5版本的go-cqhttp,解决了这一头疼的问题 在开始之前,我需要说明一下,本文章是针对没有经验和基础的用户,所以…

文心一言初次体验,说说感觉~

文心一言,被称为国内版ChatGPT,一直被寄予厚望。 在未出来前,网络上都是各种调侃。 甚至还用ChatGPT来调侃。 但是在发布会的时候,感觉李彦宏关于文心一言讲了很多东西。 但是吧,又感觉啥也没讲,说话底气还…

王垠的过去和现状

王垠的过去和现状 转自&#xff1a;http://blog.csdn.net/simoncoder/article/details/49803827 我曾在2006年冬季接触到王垠的三篇文章&#xff1a;《完全用Linux工作》、《写给支持和反对<完全用Linux工作>的人们》、《清华梦的粉碎--写给清华大学的退学申请》&#…

百度副总裁 AIG总负责人王海峰:决胜AI时代(财新专访实录)

12月5日&#xff0c;百度副总裁、AI技术平台体系(AIG)总负责人、兼百度研究院院长王海峰接受了财新专访。 这里是视频地址&#xff08;复制链接打开&#xff09;&#x1f447; http://video.caixin.com/2017-12-05/101180688.html 王海峰表示&#xff0c;人工智能正在成为这个…

王慧文收购国产AI框架OneFlow,为中国版ChatGPT疯狂抢人抢基建

杨净 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT热潮下&#xff0c;人才已经被抢疯了。 现在&#xff0c;国内首起ChatGPT相关收购已经浮出水面。 据多方媒体消息&#xff0c;美团联创王慧文的光年之外与国产AI框架一流科技&#xff08;Oneflow&#xff09;将达成并购意向。 原…

拉开中兴帷幕 张朝阳再造搜狐

对于搜狐而言&#xff0c;如果能在媒体和视频这两条核心主线上走出一条不同的路径&#xff0c;未来持续增长当指日可期。 一点财经 刘书艳&#xff5c;作者 严 睿&#xff5c;编辑 减亏65.38%&#xff0c;营收同比增长6%&#xff0c;2020年Q1财报略超市场预期的搜狐信心满满&a…

人工智能领域研发热点回眸

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在学习摘录和笔记专…

ChatGPT on Notes/Domino

大家好&#xff0c;才是真的好。 随着春节过去&#xff0c;小盆友也开始陆续到幼儿园报到&#xff0c;我们又回来和大家一起继续Notes/Domino传奇之旅。 去年年底ChatGPT横空出世&#xff0c;让大家震惊了一把。 可能有些老Notes/Domino人&#xff0c;还不知道ChatGPT是什么…