简介

  电子邮件是最流行的互联网应用之一。在系统管理领域,我们常常使用邮件来发送告警信息、业务质量报表等,方便运维人员第一时间了解业务的服务状态。本节通过python的smtplib模块来实现邮件的发送功能,模拟一个smtp客户端,通过与smtp服务器交互来实现邮件发送功能,这可以理解成foxmail的发送邮件功能,在第一次使用之前我们需要配置smtp主机地址、邮箱账号及密码等信息。Python 2.3或更高版本自带smtplib模块,无需额外安装。

smtplib模块的常用类与方法

SMTP类定义:smtp.SMTP([host[,port[,local_hostname[,timeout]]]]),作为SMTP的构造函数,功能是与smtp服务器建立连接,在连接成功后,就可以向服务器发送相关请求,比如登录、校验、发送、退出等。host参数为远程smtp主机地址,比如smtp.163.com;port为连接接口,默认端口25;local_hostname的作用是在本地主机的FQDN(完整的域名)发送HELO/EHLO(标识用户身份)指令,timeout为连接或尝试在多少秒超时。SMTP类具有如下方法:

  SMTP.connect([host[,port]])方法,连接远程smtp主机方法,host为远程主机地址,port为远程主机smtp端口,默认为25,也可以直接使用host:port形式来表示,例如:SMTP.connect("smtp.163.com","25")

  SMTP.login(user,password)方法,远程smtp主机的校验方法,参数为用户名与密码,如SMTP.login("python_2014@163.com","abcd1234")。

  SMTP.sendmail(from_addr,to_addr,msg[,mail_options,rcpt_options])方法,实现邮件的发送功能,参数依次为发件人、收件人、邮件内容,例如:SMTP.sendmail("python_2014@163.com","demo@domail.com",body),其中body内容定义如下:

"""From:python_2014@163.com

To:demo@domail.com

Subject:test mail

test mail body"""

  SMTP.starttls([keyfile[,certfile]]) 方法启用TLS(安全传输)模式,所有SMTP指令都将加密传输,例如使用gmail的smtp服务时需要开启此项才能正常发送邮件,如SMTP.starttls()。

  SMTP.quit()方法,断开smtp服务器的连接。

代码示例:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import smtplib
import  stringHOST = "smtp.exmail.qq.com" #定义smtp主机
SUBJECT = "Test email from Python" #主题
FROM = "test@qq.com"  #发件人地址
TO = "test1@arcvideo.com" #收件人地址
text = "Python rules them all!" #邮件内容
BODY = string.join(("From: %s" % FROM,"To: %s" % TO,"Subject: %s" % SUBJECT,"",text),"\r\n")server = smtplib.SMTP() #创建一个SMTP()对象
server.connect(HOST,"25") #通过connect 方法连接smtp主机
server.starttls()   #开启安全传输模式
server.login("test@arcvideo.com","pwd") #邮箱账号登录校验
server.sendmail(FROM, [TO], BODY) #邮件发送
server.quit() #断开smtp连接

  将会收到一封类似这样的邮件

定制个性化邮件格式方法

通过邮件传输简单的文本已经无法满足我们的需求,比如我们时长会定制业务质量报表,在邮件主体中包含HTML、图像、声音以及附件格式等,MIME(Mutipurpose Internet Mail Extensions,多用途互联网邮件扩展)作为一种新的扩展邮件格式很好的补充了这一点。python中常用的MIME实现类:

转载于:https://www.cnblogs.com/Jabe/p/9048796.html

发送电子邮件模块smtplib相关推荐

  1. smtplib python_python使用电子邮件模块smtplib的方法

    Smptp类定义:smtplib.SMTP(host[,port[,local_hostname[,,timeout]]]),作为SMTP的构造函数,功能是与smtp服务器建立连接,在连接成功后,就可 ...

  2. 【私人订制Python模块库】Pyemail:更方便快捷地发送电子邮件

    文章目录 一.前言背景 二.个人首秀模块 三.如何打包模块 四.实际运用例子 一.前言背景 前几天学习了smtplib和email模块,Get了新技能--如何用Python发送电子邮件,还能发送超文本 ...

  3. 在Python中使用SMTP发送电子邮件

    Python中有内置的smtplib模块,完成一封邮件的发送,需要做很多准备工作.第三方的py_smtp这个包也是基于smtplib的,在Python中使用py_smtp发送电子邮件非常方便,只要填写 ...

  4. python中带附件发送电子邮件_python发送带附件邮件

    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...

  5. 使用Python发送电子邮件

    by Arjun Krishna Babu 通过Arjun Krishna Babu 如何使用Python发送电子邮件 (How to send emails using Python) As a l ...

  6. 我与python约个会:31.企业级开发进阶3.1:发送电子邮件

    从古代的八百里加急,到现在的电子邮件,邮件的发展见证了上下五千年的发展史,这些当然是废话,只是要说说邮件的重要性. 可常规的通信手段相比,尤其是在现在,电话.QQ.微信等等各种社交软件的兴起,比传统的 ...

  7. python网络编程smtp协议发送电子邮件

    SMTP协议 SMTP 的全称是"Simple Mail Transfer Protocol",即简单邮件传输协议.它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的 ...

  8. 发送邮件_使用 Python 发送电子邮件

    在实际运用中,我们可能需要通过电子邮件告诉我们 Python 运行的结果的是否与预期的一致.现在我们就来看一下,怎么通过 Python 发送邮件. 这个示例中我们需要用到的第三方库有: •smtpli ...

  9. 利用Excel批量高速发送电子邮件

    利用Excel批量高速发送电子邮件,分两步: 1. 准备待发送的数据: a.) 打开Excel,新建Book1.xlsx b.) 填入以下的内容, 第一列:接收人,第二列:邮件标题,第三列:正文,第四 ...

最新文章

  1. 百度js库tangram开源
  2. Spring Boot——Druid在application.yml文件中配置【spring.datasource.druid.aop-patterns】无效解决方案
  3. Python Excel表格操作总结
  4. libusb:libusb_bulk_transfer的timeout参数问题
  5. python深拷贝_python 深拷贝与浅拷贝的区别
  6. php判断第一个插入css,织梦dedecms的arclist循环中判断第一个li,则添加固定的css否则不加...
  7. 小白_Unity引擎_Console控制台
  8. c4d学习笔记-快捷键
  9. 从VBA到VSTO的一些想法
  10. 报表工具使用教程-FineReport决策报表导出Plus
  11. 启动项中删除微PE工具箱
  12. Linux内核静态映射表建立过程分析
  13. python入门——python基础语法
  14. 使用循环完成剪刀石头布游戏
  15. hyperMILL自动程序单后处理刀库模板制作视频教程
  16. Learning Span-Level Interactions for Aspect Sentiment Triplet Extraction 论文阅读 ACL2021
  17. 全球与中国身份和访问管理(IAM)软件行业调查与未来发展趋势研究报告
  18. 呼叫系统呼叫中心crm系统
  19. 【历史上的今天】9 月 1 日:Pascal 语言诞生;世界上首批大规模生产的个人电脑出现;世界上第一家网吧开业
  20. java编写workflow_workflow说明--编写具体业务都用此方法

热门文章

  1. POJ 1251 Jungle Roads
  2. 在Visual Studio 2008中编译snort-2.8.6.1.tar.gz
  3. java map 迭代删除元素,java – 如何在迭代时删除和添加元素到TreeMap?
  4. php vue jwt 实战,Vue路由之JWT身份认证的实现方法
  5. java安全接口调用_步骤3:调用Java接口
  6. python获取用户输入中文_python中的用户输入
  7. 获取图像的梯度,方向和方向梯度图像
  8. orcad快捷键_在orcad同一页面的连接关系应该怎么处理呢?
  9. python 配置文件对比_Python运维自动化之nginx配置文件对比操作示例
  10. python中write的用法_Python中操作文件之write()方法的使用教程