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 相关文章推荐
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
快速解决pandas.read_csv()乱码的问题
Jun 15 Python
python一行sql太长折成多行并且有多个参数的方法
Jul 19 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
Jan 17 Python
如何用Python做一个微信机器人自动拉群
Jul 03 Python
使用python将excel数据导入数据库过程详解
Aug 27 Python
Python 音频生成器的实现示例
Dec 24 Python
Python tkinter常用操作代码实例
Jan 03 Python
django ListView的使用 ListView中获取url中的参数值方式
Mar 27 Python
python中有函数重载吗
May 28 Python
Python matplotlib安装以及实现简单曲线的绘制
Apr 26 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页面间参数传递的四种方法详解
2013/06/09 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
php多线程并发实现方法
2016/09/30 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
JavaScript 乱码问题
2009/08/06 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
jQuery内容过滤选择器用法分析
2015/02/10 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
jQuery自定义数值抽奖活动代码
2016/06/11 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
jQuery插件DataTables分页开发心得体会
2017/08/22 jQuery
bootstrap Table的一些小操作
2017/11/01 Javascript
python中的装饰器详解
2015/04/13 Python
Python中标准模块importlib详解
2017/04/16 Python
Python读取properties配置文件操作示例
2018/03/29 Python
python简易远程控制单线程版
2018/06/20 Python
Python Pillow Image Invert
2019/01/22 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
车辆委托书范本
2014/10/05 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
自主招生自荐信范文
2015/03/04 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis
Python如何用re模块实现简易tokenizer
2022/05/02 Python