在一些场景中经常需要发送邮件, 像是持续集成和运维报警等. 而使用Python脚本能够很快捷方便得实现发送各种邮件的需求.这里就通过Python基于SMTP(Simple Mail Transfer Protocol)实现一套可以群发,Html内容和附件的脚本。

既然是要发送各种类型的邮件, 首先需要有一个邮箱.这里就以腾讯企业邮箱为例.做完一下三个准备工作之后就可以开始写脚本了。

准备

在设置中开启所有SMTP相关服务.

记录发送邮件服务器地址, 连接方式和端口

新增一个授权密码并记录起来.

连接邮件服务器并登陆

Python中有smtplib模块可供使用, 将它导入进来. 在发送邮件服务器地址信息那里可以看到连接有两种方式, 一种是普通连接, 一种是经过加密的连接. 在脚本中就根据需求去构建两种不同的链接对象. 通过邮件服务器地址这里的server_host也就是smtp.exmail.qq.com和默认的服务器端口(SMTP方式默认使用25端口而SMTP_SSL就是默认使用465端口, 通常邮件服务器都是可以使用默认端口的)建立与邮件服务器之间的连接. 并通过邮箱账户和上面第三步中设置的授权密码登录邮箱服务器. 没有异常信息的话就连接邮件服务器并登录成功了.

发送文本邮件

发送邮件之前先验证一下当前是否已经登录到邮件服务器. 再通过email模块中的MIMEText构建出包含发件人, 收件人列表, 邮件标题和邮件内容的消息体.因为这里是发送文本内容的邮件, 所以content_type是plain.

构建完消息体之后就可以直接调用SMTP的sendmail方法, 将消息体从发件方发送到收件列表中的收件邮箱中去.

发送Html邮件

如果发送普通文本邮件成功了, 那么想要发送html内容的邮件就很简单了, 稍微改一下上面的代码给content_type多一种html的选择就可以了. 通过外部的参数控制构建消息体是纯文件内容还是html内容. 这样就可以使用一些html模板来发送固定格式的邮件.

发送附件

首先从email模块中引入MIMEMultipart. 从这个MIME扩展类的名字也可以看出它的作用是可以构建多个MIME的消息体, 并将它们装配起来.继续修改前面的代码. 根据发件人, 收件人列表和邮箱标题构建出多MIME实例.

接着根据参数决定构建纯文本还是Html内容的消息体, 将该包含邮件内容的消息体装载进上面初始化过的multi_msg中. 完成邮件内容部分的填充.

完成代码改造之后就要加入对附件的支持, 遍历外部传入的文件列表, 并根据文件构建出包含附件的消息体, 将其依次装载进multi_msg中.

打开遍历文件列表时拿到附件, 将其初始化为MIME消息体, 并且设置附件的文件属性和附件的名字.

汇总

功能代码完成之后再通过getopt构建出来外部参数指令, 方便外部调用脚本.

执行脚本

收到群发带附件的邮件

【编辑推荐】

【责任编辑:枯木 TEL:(010)68476606】

点赞 0

python发邮件脚本详解_Python发送邮件脚本相关推荐

  1. python发邮件有什么意思_python发邮件要装什么

    在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理.SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目 ...

  2. python发邮件附件带变量_Python 第17关——邮件还能这样发(QQ邮箱)!

    完成一个项目的流程 1.明确项目目标 2.分解过程.拆解项目 3.逐步执行.代码实现 目标:Python群发邮件 目标:学会学习新模块 掌握[学习模块的方式]→掌握学习新知识的方式 版本1.0:学习模 ...

  3. python使用kafka原理详解_Python操作Kafka原理及使用详解

    Python操作Kafka原理及使用详解 一.什么是Kafka Kafka是一个分布式流处理系统,流处理系统使它可以像消息队列一样publish或者subscribe消息,分布式提供了容错性,并发处理 ...

  4. python发邮件给女朋友代码_python代码实现发邮件

    代码实现发邮件 Python的smtplib提供了一种很方便的途径发送电子邮件.它对smtp协议进行了简单的封装. 这里以QQ邮箱为例,首先要拿到授权码,这里登录你的QQ邮箱,在设置中,选择账号选项, ...

  5. python中logging模块详解_python logging日志模块详解

    logging 日志模块详解 用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这 ...

  6. Java发邮件(详解+源代码)

    Java发送邮件 一.邮件概述 (1)收发邮件 发邮件大家都会吧!发邮件是从客户端把邮件发送到邮件服务器,收邮件是把邮件服务器的邮件下载到客户端. 我们在163.126.QQ等网站注册的Email账户 ...

  7. python发邮件给女朋友代码_Python群发邮件实例代码

    直接上代码了 import smtplib msg = MIMEMultipart() #构造附件1 att1 = MIMEText(open('/home/a2bgeek/develop/pytho ...

  8. python 发邮件 无需密码_Django实现发送邮件找回密码功能

    在各大网站上,一定都遇到过找回密码的问题,通常采用的方式是通过发送带有验证码的邮件进行身份验证,本文将介绍通过Django实现邮件找回密码功能. 找回密码流程 功能流程: 1.首先在用户登录界面,添加 ...

  9. python接口测试之requests详解_Python接口测试-requests库

    一.requests库 Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量 ...

最新文章

  1. [15]APUE:pipe / FIFO
  2. Jenkins持续集成输出html测试报告
  3. leetcode算法题--验证二叉树的前序序列化
  4. 中奖福利事宜 和 跪求意见
  5. SVG 教程 (一)
  6. xx信息管理系统设计
  7. “21天好习惯”第一期-13
  8. 最新 eclipse 安装SVN插件
  9. 久其报表大厅_久其报表是什么?
  10. 系统更新win10服务器出错,Win10系统Windows Update更新出现0x80080005错误代码怎么办...
  11. 计算机会计课程设计范文,会计课程设计心得体会范文
  12. 【影像配准】配准之棋盘网格图(镶嵌图像)(附有 C++ 代码)
  13. python和excel的区别-对比Excel,轻松学习Python数据分析
  14. 三十二、http与www服务介绍
  15. python常用re正则表达式大全,查找指定内容
  16. H5兄弟连web前端
  17. 汕头c语言培训班,汕头c语言编程学习,汕头学c语言编程哪个好,汕头学c语言编程需要报培训班吗...
  18. [翻译] LaTeX Error: Environment XXX undefined
  19. OSX:App Store下载到哪里去了?
  20. 蓬莱阁的“八仙传说”,八仙指哪八仙?

热门文章

  1. 一文看懂async和“await”关键词是如何简化了C#中多线程的开发过程
  2. 将终结点图添加到你的ASP.NET Core应用程序中
  3. 如何在ASP.NET Core中使用SignalR构建与Angular通信的实时通信应用程序
  4. 基于Jenkins的持续交付全流程设计与实践
  5. 2020年你应该学习 .Net Core
  6. 你知道怎么使用DebugView查看调试信息吗?
  7. 微软开源微服务运行时Dapr,赋能云原生应用开发
  8. 使用.NET Core创建Windows服务(二) - 使用Topshelf方式
  9. 2019年9月中国编程语言排行榜,C#排第三
  10. 迫于误解压力,RMS从自由软件基金会与MIT离职