原标题:利用Python 发送邮件

概要

我们都知道SMTP(简单邮件传输协议),是一组用于从原地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP规定电子邮件应该如何格式化、如何加密,以及如何在邮件服务器之间传递。SMTP服务器就是通过遵循SMTP协议的发送邮件服务器。

如果你使用过邮件客户端,比如Foxmail,outlook等,那么你应该了解SMTP服务器和端口号,除了服务器和端口,我们还需要进行其他配置,默认情况下邮件服务提供商是不允许我们使用程序进行邮件发送的,如果想要使用程序发送电子邮件,就需要我们手动开启SMTP服务,并获取一个专用的授权码(用于登陆)。 -- 需要自行去了解所用邮箱的授权码获取方式

使用smtplib和email模块发送邮件

得到邮箱的授权码就可以使用Python代码发送电子邮件了。Python标准库有多个与邮件相关的模块,其中smtplib负责发送邮件,email模块用来构造邮件和解析邮件内容。

smtplib模块

stmplib发送邮件大概分为以下几个步骤:

连接到SMTP服务器

发送SMTP的“Hello”消息

登陆到SMTP服务器

发送电子邮件

关闭SMTP服务器的连接

对于简单的邮件,smtplib的使用是非常简单的,下面是实例

PS:sendmail的参数为发件人,收件人,邮件内容

注意:可以在创建加密链接之前使用smtp.set_debuglevel(1),来显示与SMTP服务器交互的相关信息

查看发送的邮件会发送,有两个问题,一是收件人栏为空,二是邮件内容缺失,这是因为邮件主题、如何显示发件人、收件人等信息并不是通过SMTP协议发给MTA,而是包含在发给MTA的文本中的,所以,我们必须把From、To和Subject添加到email模块中的MIMEText中,才是一封完整的邮件。(MTA可以理解为邮件代理服务器)。

smtplib模块结合email模块

使用email模块构建一个邮件对象(Message),email模块中支持很多邮件对象

MIMEText:表示一个纯文本的邮件* 常用

MIMEImage:表示一个作为附件的图片

MIMEMultipart:用于把多个对象组合起来

其中还有诸如其他的类:MIMEBase、MIMEAudio等。

MIMEText对象的主要参数是:MIMEText(_text, _subtype='plain', _charset=None),其中:

_text:表示邮件内容

_subtype:表示邮件内容的类型,默认为plain(纯文本),还可以设置为html,表示正文是html文件(会渲染HTML标签)

_charset:表示邮件编码,默认情况下使用ascii编码

下面是一个发送纯文本邮件的例子:

PS:利用msg对象,我们可以构建邮件的header,通过添加header信息,给邮件增加subject等参数,达到补全邮件信息的目的。msg的header添加方式和使用字典的方式相同。

带附件的邮件

前面说明了发送纯文本邮件的方法,在使用邮件发送带附件(图片)的邮件时,需要使用MIMEMultipart对象,并把MIMEImage对象添加。

使用yagmail发送邮件

Python的标准库smtplib和email,相对来说还是比较复杂的,因此许多开源项目提供了更加易用的接口来发送邮件。比如yagmail就是一个使用比较广泛的开源项目,它依旧使用smtplib和email模块,但是相对于直接使用smtplib和email模块,它提供了更加Pythonic的接口,并具有更好的易用性。

由于yagmail属于第三方库,在使用前需要先行安装

pip3 install yagmail

下面使用yagmail发送一封简单的邮件

如果要携带附件那么只需要在send后面添加即可

责任编辑:

python 发送邮件_利用Python 发送邮件相关推荐

  1. 利用python发送邮件_利用python实现简单的邮件发送客户端示例

    脚本过于简单,供学习和参考.主要了解一下smtplib库的使用和超时机制的实现.使用signal.alarm实现超时机制. #!/usr/bin/env python # -*- coding: ut ...

  2. excel python插件_利用 Python 插件 xlwings 读写 Excel

    Python 通过 xlwings 读取 Excel 数据 去年底公司让我做设备管理,多次委婉拒绝,最终还是做了.其实我比较喜欢技术.做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Exce ...

  3. 动态照片墙 python 实现_利用python生成照片墙的示例代码

    这篇文章主要介绍了利用python生成照片墙的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 PIL(Python Im ...

  4. java调python 监控_利用Python实现一个简单的系统监控图表

    作为运维人员,想必大家肯定都做过这样的事情:为了监控系统资源使用情况,开了若干个窗口,来回切换看输出: 只要我切得够快,性能异常点就逃不过我的眼睛! 这个时候你要是有个监控工具自然是很好的,例如我们美 ...

  5. python推荐_利用Python构建一个简单的推荐系统

    原标题:利用Python构建一个简单的推荐系统 摘要:快利用python构建一个属于你自己的推荐系统吧,手把手教学,够简单够酷炫.在此之前读者需要对pandas和numpy等数据分析包有所了解. 什么 ...

  6. autocad支持python吗_利用python控制Autocad:pyautocad方式

    发现pyautocad模块:可以用python控制autocad的包.今天把文档中的重点内容摘录出来,以后绘图.计算大工程量.或者识别施工图的时候时候也许可以用到. 一.连接cad pyautocad ...

  7. python拼图_利用python制作拼图小游戏的全过程

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 关注公众号:Python学习指南,回复"拼图"即可获取源码 环境搭建 安装P ...

  8. ppt python 图表_利用python分析weibo数据做成图表放入PPT中

    起因 很久以前,就有个想法,就是自动分析微博的数据,但是之前一直想的是网页版展示,flask想学了好久都没学,偶然的一次看到了一篇关于python处理pptx的文章,再加上同窗三年的室友在毕业后竟然主 ...

  9. python 认证机构_利用Python爬了SIG官网BQB认证公司清单,我有一些重大发现..

    关注"无线技术联盟"提供有价值的物联网市场信息和最新的技术分析 利用Python爬取了蓝牙联盟上近一年BQB认证公司的清单,把爬到的有价值的东西写出来分享给大家. 1 蓝牙认证 产 ...

最新文章

  1. 在vc6控制台程序中如何调用运行ImageMagick命令行工具
  2. Jsp实现在线影院售票系统
  3. 自定义控件:流式布局
  4. Java的agent机制简述
  5. 指定Gradle构建属性
  6. 10 张程序员喜爱的壁纸,需要自取~
  7. 【牛客 - 157D】插排树(dfs,树形dp)
  8. 英语口语Week 15 Wednesday
  9. Report Style
  10. java Flink使用addSink方法保存流到mysql数据库中
  11. 刷屏了!这篇Python学习贴,90%的程序员都用的上!
  12. 取最大值_举一反三17——线段平方和的最小值与最大值
  13. 微信公众号支付开发-php
  14. Windows2012开机启动项设置
  15. 数据库分片以及schema概念
  16. oauth2生成jwt令牌
  17. 最新免费ChatGPT中文镜像网站+整理了20多个-持续更新
  18. python fun函数、求4x4整型数组的主对角线元素的和_C语言编程求一个4x4数组左下三角 包括主对角线元素的和...
  19. C# Serializable标签 和序列化
  20. # Linkage Mapper 版本及下载

热门文章

  1. 基于matlab的双音多频信号识别,基于MATLAB的双音多频信号识别
  2. Java 根据id不同,生成唯一礼包码
  3. 计算机图形学笔记1--新建vs项目及绘制直线、矩形、椭圆
  4. HEVC之NALU格式
  5. 申报高企税务局需要查账吗?
  6. TDengine 应用实录:存储缩减超过 60%,HBase 等集群指数级下线
  7. 用了python之后笔记本卡了怎么办_造成笔记本电脑卡原因 笔记本电脑卡解决方法【详解】...
  8. js shell 运行javascript文件
  9. 河北专接本微机原理知识点07
  10. 数据分析开篇!三个核心:More、Messy、Correlation