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的logging模块在stdout输出的两种方法
May 17 Python
Python数据操作方法封装类实例
Jun 23 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 Python
python操作MySQL 模拟简单银行转账操作
Sep 27 Python
Python内置函数delattr的具体用法
Nov 23 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
Dec 03 Python
python自动截取需要区域,进行图像识别的方法
May 17 Python
Python中函数的基本定义与调用及内置函数详解
May 13 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
python 爬虫网页登陆的简单实现
Nov 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
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
php使HTML标签自动补全闭合函数代码
2012/10/04 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
Jquery焦点图实例代码
2014/11/25 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
JavaScript Canvas绘制圆形时钟效果
2020/08/20 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
vue 使用鼠标滚动加载数据的例子
2019/10/31 Javascript
js实现简单进度条效果
2020/03/25 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
国际贸易专业个人求职信格式
2014/02/02 职场文书
主题党日活动总结
2014/07/08 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
师范生见习总结范文
2015/06/23 职场文书
行政处罚告知书
2015/07/01 职场文书
什么是css原子化,有什么用?
2022/04/24 HTML / CSS
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS