Python实现SMTP邮件发送


Posted in Python onJune 16, 2020

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

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

SMTP 对象语法如下:

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

  • host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如: runoob.com,这个是可选参数。
  • port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25。
  • local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。

Python SMTP 对象使用 sendmail 方法发送邮件,语法如下:

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

参数说明:

  • from_addr: 邮件发送者地址。
  • to_addrs: 字符串列表,邮件发送地址。
  • msg: 发送消息

这里要注意一下第三个参数,msg 是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意 msg 的格式。这个格式就是 smtp 协议中定义的格式。

实例

以下执行实例需要你本机已安装了支持 SMTP 的服务,如:sendmail。

import smtplib

from email.mime.text import MIMEText
from email.header import Header

sender = '973708513@qq.com' # 发送方
receiver = 'sutaoyu001@163.com' # 接收方

# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('QQ像163发送测试文件....','plain','utf-8')
message['From'] = Header('Python教程...') # 发送者
message['To'] = Header('测试','utf-8')   # 接受者

subject = 'Python SMTP测试'
message['subject'] = Header('utf-8')

try:
  smtpObj = smtplib.SMTP('localhost')
  smtpObj.sendmail(sender, receiver, message.as_string())
  print("邮件发送成功")
except smtplib.SMTPException:
  print("Error: 无法发送邮件")

# 邮件发送成功

如果我们本机没有 sendmail 访问,也可以使用其他邮件服务商的 SMTP 访问(QQ、网易、Google等)。

import smtplib

from email.mime.text import MIMEText
from email.header import Header

#第三方SMTP服务
host="smtp.qq.com" #设置服务器
user="973708513"  #用户名
password="xxxxxx"  #口令

sender = '973708513@qq.com' # 发送方
receiver = 'sutaoyu001@163.com' # 接收方

# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('QQ像163发送测试文件....','plain','utf-8')
message['From'] = Header('Python教程...') # 发送者
message['To'] = Header('测试','utf-8')   # 接受者

subject = 'Python SMTP测试'
message['subject'] = Header('utf-8')

try:
  smtpObj = smtplib.SMTP()
  smtpObj.connect(host, 465)  # 25 为 SMTP 端口号
  smtpObj.login(user,password)
  smtpObj.sendmail(sender, receiver, message.as_string())
  print("邮件发送成功")
except smtplib.SMTPException:
  print("Error: 无法发送邮件")

# 邮件发送成功

以上就是Python实现SMTP邮件发送的详细内容,更多关于Python SMTP的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python生成指定尺寸缩略图的示例
May 07 Python
用Python操作字符串之rindex()方法的使用
May 19 Python
python字符类型的一些方法小结
May 16 Python
python机器学习之神经网络(一)
Dec 20 Python
Python获取Redis所有Key以及内容的方法
Feb 19 Python
python之生产者消费者模型实现详解
Jul 27 Python
pycharm专业版远程登录服务器的详细教程
Sep 15 Python
如何通过安装HomeBrew来安装Python3
Dec 23 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 Python
python基础之文件处理知识总结
May 23 Python
OpenCV绘制圆端矩形的示例代码
Aug 30 Python
python语言中有算法吗
Jun 16 #Python
python爬虫可以爬什么
Jun 16 #Python
通过cmd进入python的步骤
Jun 16 #Python
解决Keras 自定义层时遇到版本的问题
Jun 16 #Python
Keras实现支持masking的Flatten层代码
Jun 16 #Python
Keras自定义实现带masking的meanpooling层方式
Jun 16 #Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 #Python
You might like
php递归使用示例(php递归函数)
2014/02/14 PHP
php封装一个异常的处理类
2017/06/08 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
jquery之empty()与remove()区别说明
2010/09/10 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
js实现文字截断功能
2016/09/14 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
vue css 引入asstes中的图片无法显示的四种解决方法
2020/03/16 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
python os模块简单应用示例
2019/05/23 Python
django 环境变量配置过程详解
2019/08/06 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
python怎么判断素数
2020/07/01 Python
Python 创建TCP服务器的方法
2020/07/28 Python
python实现银行账户系统
2021/02/22 Python
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
社区七一党员活动方案
2014/01/25 职场文书
合作协议书怎么写
2014/04/18 职场文书
培训班开班主持词
2015/07/02 职场文书
护理自荐信
2019/05/14 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL