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切片知识解析
Mar 06 Python
基于Python实现对PDF文件的OCR识别
Aug 05 Python
python对html过滤处理的方法
Oct 21 Python
python实现事件驱动
Nov 21 Python
Python从函数参数类型引出元组实例分析
May 28 Python
python try except返回异常的信息字符串代码实例
Aug 15 Python
tensorflow自定义激活函数实例
Feb 04 Python
jupyter 导入csv文件方式
Apr 21 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
Jun 05 Python
python操作ini类型配置文件的实例教程
Oct 30 Python
Python基础之hashlib模块详解
May 06 Python
教你使用一行Python代码玩遍童年的小游戏
Aug 23 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 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
php抓取页面与代码解析 推荐
2010/07/23 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
Win8下python3.5.1安装教程
2020/07/29 Python
python里dict变成list实例方法
2019/06/26 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
2019/08/08 Python
Python流程控制 while循环实现解析
2019/09/02 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
CSS3中Transform动画属性用法详解
2016/07/04 HTML / CSS
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
德国苹果商店:MacTrade
2020/05/18 全球购物
酒店管理求职信
2014/06/09 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
老干部座谈会主持词
2015/07/03 职场文书
Oracle笔记
2021/04/05 Oracle
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电