发送电子邮件模块smtplib
简介
电子邮件是最流行的互联网应用之一。在系统管理领域,我们常常使用邮件来发送告警信息、业务质量报表等,方便运维人员第一时间了解业务的服务状态。本节通过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相关推荐
- smtplib python_python使用电子邮件模块smtplib的方法
Smptp类定义:smtplib.SMTP(host[,port[,local_hostname[,,timeout]]]),作为SMTP的构造函数,功能是与smtp服务器建立连接,在连接成功后,就可 ...
- 【私人订制Python模块库】Pyemail:更方便快捷地发送电子邮件
文章目录 一.前言背景 二.个人首秀模块 三.如何打包模块 四.实际运用例子 一.前言背景 前几天学习了smtplib和email模块,Get了新技能--如何用Python发送电子邮件,还能发送超文本 ...
- 在Python中使用SMTP发送电子邮件
Python中有内置的smtplib模块,完成一封邮件的发送,需要做很多准备工作.第三方的py_smtp这个包也是基于smtplib的,在Python中使用py_smtp发送电子邮件非常方便,只要填写 ...
- python中带附件发送电子邮件_python发送带附件邮件
Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...
- 使用Python发送电子邮件
by Arjun Krishna Babu 通过Arjun Krishna Babu 如何使用Python发送电子邮件 (How to send emails using Python) As a l ...
- 我与python约个会:31.企业级开发进阶3.1:发送电子邮件
从古代的八百里加急,到现在的电子邮件,邮件的发展见证了上下五千年的发展史,这些当然是废话,只是要说说邮件的重要性. 可常规的通信手段相比,尤其是在现在,电话.QQ.微信等等各种社交软件的兴起,比传统的 ...
- python网络编程smtp协议发送电子邮件
SMTP协议 SMTP 的全称是"Simple Mail Transfer Protocol",即简单邮件传输协议.它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的 ...
- 发送邮件_使用 Python 发送电子邮件
在实际运用中,我们可能需要通过电子邮件告诉我们 Python 运行的结果的是否与预期的一致.现在我们就来看一下,怎么通过 Python 发送邮件. 这个示例中我们需要用到的第三方库有: •smtpli ...
- 利用Excel批量高速发送电子邮件
利用Excel批量高速发送电子邮件,分两步: 1. 准备待发送的数据: a.) 打开Excel,新建Book1.xlsx b.) 填入以下的内容, 第一列:接收人,第二列:邮件标题,第三列:正文,第四 ...
最新文章
- 百度js库tangram开源
- Spring Boot——Druid在application.yml文件中配置【spring.datasource.druid.aop-patterns】无效解决方案
- Python Excel表格操作总结
- libusb:libusb_bulk_transfer的timeout参数问题
- python深拷贝_python 深拷贝与浅拷贝的区别
- php判断第一个插入css,织梦dedecms的arclist循环中判断第一个li,则添加固定的css否则不加...
- 小白_Unity引擎_Console控制台
- c4d学习笔记-快捷键
- 从VBA到VSTO的一些想法
- 报表工具使用教程-FineReport决策报表导出Plus
- 启动项中删除微PE工具箱
- Linux内核静态映射表建立过程分析
- python入门——python基础语法
- 使用循环完成剪刀石头布游戏
- hyperMILL自动程序单后处理刀库模板制作视频教程
- Learning Span-Level Interactions for Aspect Sentiment Triplet Extraction 论文阅读 ACL2021
- 全球与中国身份和访问管理(IAM)软件行业调查与未来发展趋势研究报告
- 呼叫系统呼叫中心crm系统
- 【历史上的今天】9 月 1 日:Pascal 语言诞生;世界上首批大规模生产的个人电脑出现;世界上第一家网吧开业
- java编写workflow_workflow说明--编写具体业务都用此方法
热门文章
- POJ 1251 Jungle Roads
- 在Visual Studio 2008中编译snort-2.8.6.1.tar.gz
- java map 迭代删除元素,java – 如何在迭代时删除和添加元素到TreeMap?
- php vue jwt 实战,Vue路由之JWT身份认证的实现方法
- java安全接口调用_步骤3:调用Java接口
- python获取用户输入中文_python中的用户输入
- 获取图像的梯度,方向和方向梯度图像
- orcad快捷键_在orcad同一页面的连接关系应该怎么处理呢?
- python 配置文件对比_Python运维自动化之nginx配置文件对比操作示例
- python中write的用法_Python中操作文件之write()方法的使用教程