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脚本设置系统时间的两种方法
Feb 21 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
Jul 11 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
python中pip的安装与使用教程
Aug 10 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
Django 全局的static和templates的使用详解
Jul 19 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
python字符串替换re.sub()实例解析
Feb 09 Python
Python2 与Python3的版本区别实例分析
Mar 30 Python
Python爬虫代理池搭建的方法步骤
Sep 28 Python
Pytorch 如何加速Dataloader提升数据读取速度
May 28 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 作用域解析运算符(::)
2010/07/27 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
smarty模板引擎从php中获取数据的方法
2015/01/22 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
vue实现前端分页完整代码
2020/06/17 Javascript
Python实现115网盘自动下载的方法
2014/09/30 Python
Python执行时间的计算方法小结
2017/03/17 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
详解Java中一维、二维数组在内存中的结构
2021/02/11 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
荷兰游戏商店:Allyouplay
2019/03/16 全球购物
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
如何查找网页漏洞
2016/06/22 面试题
电子商务个人自荐信
2013/12/12 职场文书
2014的自我评价
2014/01/13 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
详细聊聊Oracle表碎片对性能有多大的影响
2022/03/19 Oracle
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript