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的web框架编写前端模版的教程
Apr 30 Python
Python实现高效求解素数代码实例
Jun 30 Python
判断网页编码的方法python版
Aug 12 Python
Anaconda入门使用总结
Apr 05 Python
python list删除元素时要注意的坑点分享
Apr 18 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
Oct 21 Python
基于python if 判断选择结构的实例详解
May 06 Python
Python hashlib常见摘要算法详解
Jan 13 Python
Python使用py2neo操作图数据库neo4j的方法详解
Jan 13 Python
详解python itertools功能
Feb 07 Python
Python 如何在字符串中插入变量
Aug 01 Python
python 常用日期处理-- datetime 模块的使用
Sep 02 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分页函数
2006/07/08 PHP
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
请php正则走开
2008/03/15 PHP
thinkphp中memcache的用法实例
2014/11/29 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
2021/03/09 PHP
js 自定义的联动下拉框
2010/02/07 Javascript
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
使用JS获取SessionStorage的值
2018/01/12 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
python将人民币转换大写的脚本代码
2013/02/10 Python
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
利用Python命令行传递实例化对象的方法
2016/11/02 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
美国第一香水网站:Perfume.com
2017/01/23 全球购物
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
难忘的一天教学反思
2014/04/30 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
2015年节能减排工作总结
2015/05/14 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
死亡诗社观后感
2015/06/05 职场文书
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python